出于显而易见的原因,我不想用测试代码污染我的生产代码。我正在尝试使用 XCode 的 ui 测试框架。在运行时,我想用仅存在于我的测试目标中的另一个类替换其中一个类。
知道如何实现这一目标吗?
最佳答案
您需要所谓的测试模拟。
您在测试文件中创建一个模拟类来扩展您想要模拟的类。
class MockHttp extends HttpService {
var getWasCalledCount = 0
override func get(request: URLRequest) {
getWasCalledCount = getWasCalledCount + 1
}
}
然后在您的测试中,您使用模拟修改原始类属性(我喜欢在 setUp 方法中修改它)
override func setUp() {
var mockHttp = MockHttp()
classIWantToInjectWithMock = ClassIWantToInjectWithMock(http: mockHttp)
}
我希望这有帮助!祝你有美好的一天!
关于swift - XC测试 : how can we inject a class at runtime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40180997/