Moxie
专为 Swift 设计的敏捷模拟库
使用 Moxie
假设您有一个想要模拟的协议。
protocol List {
mutating func add(_ item: String)
mutating func clear()
func get(_ index: Int) -> String?
}
您可以使用 Moxie 创建一个模拟。
import Moxie
struct MockList: Mock, List {
var moxie = Moxie()
mutating func add(_ item: String) {
record(function: "add", wasCalledWith: [item])
}
mutating func clear() {
record(function: "clear")
}
func get(_ index: Int) -> String? {
return value(forFunction: "get")
}
}
然后您可以在测试中使用它。
func testList() {
var mockList = MockList()
// verifying invocations
mockList.add("one")
mockList.clear()
XCTAssertTrue(mockList.invoked(function: "add"))
XCTAssertEqual("one", mockList.parameters(forFunction: "add")[0] as? String)
XCTAssertTrue(mockList.invoked(function: "clear"))
// stubbing
mockList.stub(function: "get", return: "first")
XCTAssertEqual("first", mockList.get(0))
}