如何在Swift中模拟对象?Mirror
协议(protocol)听起来很有前途,但目前还没有做很多事情。
到目前为止,我发现的唯一方法是继承并覆盖模拟类的所有方法。当然,这不是一个真正的模拟,离理想还差很多,而且工作量很大。
还有其他想法吗?
为什么不选择OCMock?
从source:
已知限制:
最佳答案
NSHipster涉及Swift中的语言功能,从而使外部模拟库的必要性降低:
func testFetchRequestWithMockedManagedObjectContext() {
class MockNSManagedObjectContext: NSManagedObjectContext {
override func executeFetchRequest(request: NSFetchRequest!, error: AutoreleasingUnsafePointer<NSError?>) -> [AnyObject]! {
return [["name": "Johnny Appleseed", "email": "[email protected]"]]
}
}
...
}
在本地范围内创建外部依赖项的子类的能力以及添加
XCTestExpectation
的能力解决了许多与OCMock
相同的问题。诸如
OCMock
之类的库提供的一件事非常有用,即其“验证”方法可确保调用模拟类。可以手动添加,但是自动添加是不错的选择。