出于明显的原因,我不想用测试代码污染我的生产代码。我正在尝试使用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)
}


我希望这有帮助!祝你今天愉快!

10-08 05:48