我正在用Swift编写XCTest单元测试。这个想法是在特定情况下不能调用回调。
所以我做的是
func testThatCallbackIsNotFired() {
let expectation = expectationWithDescription("A callback is fired")
// configure an async operation
asyncOperation.run() { (_) -> () in
expectation.fulfill() // if this happens, the test must fail
}
waitForExpectationsWithTimeout(1) { (error: NSError?) -> Void in
// here I expect error to be not nil,
// which would signalize that expectation is not fulfilled,
// which is what I expect, because callback mustn't be called
XCTAssert(error != nil, "A callback mustn't be fired")
}
}
调用回调时,一切正常:它失败并显示一条消息“不能触发回调”,这正是我所需要的。
但是如果期望没有实现,它会失败并说
异步等待失败:超过 1 秒的超时,未实现预期:“回调被触发”。
由于我需要的是未实现的期望,因此我不希望测试失败。
你有什么建议我可以做些什么来避免这种情况?或者,也许,我可以用不同的方式达到我的目标?谢谢。