Unit testing 如何测试方法是否为';N秒后你没打电话吗?

Unit testing 如何测试方法是否为';N秒后你没打电话吗?,unit-testing,testing,xctest,ohttpstubs,Unit Testing,Testing,Xctest,Ohttpstubs,我正在编写一些测试,我需要检查应用程序收到请求时“没有发生任何事情”,该请求必须完全忽略。了解请求是否被忽略的方法是检查两个在发送请求后没有收到任何内容的代理 我不知道如何测试这个: func testIgnore() { sut.message() { //this doesn't have to be called if test succeed } sut.appointment() { //this doesn't have t

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

我不知道如何测试这个:

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秒钟,如果没有调用这些块,那么这是成功的

Add
XCTFail()
,在这两种方法中,您希望不会调用它们,因此如果调用它们,您的测试将失败

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

let exp = self.expectationWithDescription("3 seconds passed")
dispatch_after(…3 seconds…, dispatch_get_main_queue()) {
  exp.fulfill()
}
self.waitForExpectationsWithTimeout(4)
⚠️ 这是伪代码,因为我在iPhone上,所以很难在那里编写长代码,而且我可能在方法名称中输入了一些错误。根据需要进行调整



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

刚刚更改了标题,你是对的。。。这样做更有意义。