问题描述
在TestCase中,我调用了一个异步函数aTestFunction()。在回调中,取决于结果,它决定是否满足期望expectation.fulfill()
还是失败
FailedExpectation.fulfill()
由于它是一个异步函数,因此我需要wait(for: [expectation],timeout: 5.0)
来获取结果。我的问题是“ FailedExpectation.fulfill()
测试失败时,我不需要等待5秒钟进行“期望”,当FailedExpectation
完成时如何停止“等待”?
let expectation = XCTestExpectation(description: "succeed")
let FailedExpectation = XCTestExpectation(description: "Failed")
FailedExpectation.isInverted = true
aTestFunction() { result in
if result == .success {
expectation.fulfill()
} else {
FailedExpectation.fulfill()
}
}
wait(for: [expectation],timeout: 5.0)
解决方法
您不必创建两个XCTestExpectation
:
let expectation = XCTestExpectation(description: "Test function completion not called")
aTestFunction() { result in
expectation.fulfill()
if result == .success {
/// write successful test case here
} else {
XCTFail("Test function fails")
}
}
wait(for: [expectation],timeout: 5.0)
如果aTestFunction
在5中未完成,则测试用例将失败。
如果它在5时完成,那么就已经满足了预期,现在您必须测试预期结果是否存在。