gpt4 book ai didi

unit-testing - 如何测试 N 秒后是否未调用方法?

转载 作者:行者123 更新时间:2023-11-28 20:29:14 26 4
gpt4 key购买 nike

我正在编写一些测试,我需要检查当应用程序收到请求时“没有任何反应”,必须完全忽略该请求。了解请求是否被忽略的方法是检查发送请求后必须接收任何内容的两个委托(delegate)。

我不知道如何测试这个:

func testIgnore() {

sut.message() {
//this doesn't have to be called if test succeed
}

sut.appointment() {
//this doesn't have to be called if test succeed
}

stub(isHost("test.com")) { (request: NSURLRequest) -> OHHTTPStubsResponse in
let data = "specific data".dataUsingEncoding(NSUTF8StringEncoding)
return OHHTTPStubsResponse(data: data!, statusCode: 200, headers: nil)
}

}

有什么想法吗?我完全迷失了,因为我不能使用期望,因为如果期望超时,那是一个失败的测试,而这个场景将是一个成功的测试......

我需要等待例如 3 秒,如果没有调用 block 则成功

最佳答案

在您不希望被调用的两个方法中添加 XCTFail(),这样如果它们被调用,您的测试就会失败。

然后简单的使用XCTest方法进行异步测试等待3秒,例如:

let exp = self.expectationWithDescription("3 seconds passed")
dispatch_after(…3 seconds…, dispatch_get_main_queue()) {
exp.fulfill()
}
self.waitForExpectationsWithTimeout(4)

⚠️ 这是伪代码,因为我在我的 iPhone 上,所以很难在那里写长代码,而且我可能在方法名称中输入了一些错别字。根据需要进行调整。


PS:顺便说一句,我看不出这个问题与 OHHTTPStubs 有什么关系。你所有的问题都是关于“如何测试一个方法是否在 N 秒后没有被调用”…

关于unit-testing - 如何测试 N 秒后是否未调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com