首页 > 解决方案 > 如何使用闭包创建单元测试用例

问题描述

我在我的应用程序中创建了单元测试用例,到目前为止很好。我在我的项目中使用MVVM并且我有 API 请求success & failure closures。我怎样才能为此制作测试用例。

我尝试了什么:

var mockAPIService: MockApiService!

override func setUp() {
  super.setUp()
  mockAPIService = MockApiService()
  sut = PhotoListViewModel(apiService: mockAPIService)
}

func test_fetch_photo() {
  sut.apiSuccessClouser = { dataValue in
    print("apiSuccessClouser") // This doesnot executes 
    XCTAssert(dataValue)
  }
}

print("apiSuccessClouser")不执行..我只是在寻找让 clouser 与单元测试一起工作。

标签: iosswiftunit-testingxctest

解决方案


将 dataValue 存储在某个变量中并使用期望等待您的闭包执行然后进行测试。注意:这个例子是用 swift 4 编写的

let yourExpectationName = expectation(description: "xyz")
var dataToAssert = [String]() //replace with you data type
sut.apiSuccessClouser = { dataValue in
      dataToAssert = dataValue
      yourExpectationName.fulfill()
 }
    
waitForExpectations(timeout: 3) { (error) in //specify wait time in seconds
    XCTAssert(dataToAssert)
}

推荐阅读