XCTest:我们如何在运行时注入一个类

时间:2016-10-21 15:59:38

标签: swift dependency-injection xcode-ui-testing

出于显而易见的原因,我不想用测试代码污染我的生产代码。我正在尝试使用XCode的ui测试框架。在运行时,我想用其他类替换仅存在于我的测试目标中的类。

知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

你需要所谓的测试模拟。

您可以在测试文件中创建一个模拟类,用于扩展您希望模拟的类。

class MockHttp extends HttpService {
  var getWasCalledCount = 0

  override func get(request: URLRequest) { 
   getWasCalledCount = getWasCalledCount + 1
  }
}

然后在测试中使用mock修改原始类属性(我喜欢在setUp方法中使用它)

override func setUp() {
  var mockHttp = MockHttp()
  classIWantToInjectWithMock = ClassIWantToInjectWithMock(http: mockHttp)
}

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