XCTest and asynchronous testing in Xcode 6

后端 未结 4 1202
情深已故
情深已故 2020-11-30 03:32

So Apple said in the release note of Xcode 6 that we can now do asynchronous testing directly with XCTest.

Anyone knows how to do it using Xcode 6 Beta 3 (Using obj

相关标签:
4条回答
  • 2020-11-30 04:13

    The sessions video is perfect, basically you want to do something like this

    func testFetchNews() {
        let expectation = self.expectationWithDescription("fetch posts")
    
        Post.fetch(.Top, completion: {(posts: [Post]!, error: Fetcher.ResponseError!) in
            XCTAssert(true, "Pass")
            expectation.fulfill()
        })
    
        self.waitForExpectationsWithTimeout(5.0, handler: nil)
    }
    
    0 讨论(0)
  • 2020-11-30 04:22

    How I did in swift2

    Step 1: define expectation

    let expectation = self.expectationWithDescription("get result bla bla")
    

    Step 2: tell the test to fulfill expectation right below where you capture response

    responseThatIGotFromAsyncRequest = response.result.value
    expectation.fulfill()
    

    Step 3: Tell the test to wait till the expectation is fulfilled

    waitForExpectationsWithTimeout(10)
    

    STep 4: make assertion after async call is finished

    XCTAssertEqual(responseThatIGotFromAsyncRequest, expectedResponse)
    
    0 讨论(0)
  • 2020-11-30 04:23

    Obj-C example:

    - (void)testAsyncMethod
    {
    
        //Expectation
        XCTestExpectation *expectation = [self expectationWithDescription:@"Testing Async Method Works!"];
    
        [MyClass asyncMethodWithCompletionBlock:^(NSError *error, NSHTTPURLResponse *httpResponse, NSData *data) {
    
            if(error)
            {
                NSLog(@"error is: %@", error);
            }else{
                NSInteger statusCode = [httpResponse statusCode];
                XCTAssertEqual(statusCode, 200);
                [expectation fulfill];
            }
    
        }];
    
    
        [self waitForExpectationsWithTimeout:5.0 handler:^(NSError *error) {
    
            if(error)
            {
                XCTFail(@"Expectation Failed with error: %@", error);
            }
    
        }];
    }
    
    0 讨论(0)
  • 2020-11-30 04:28

    Session 414 covers async testing in Xcode6

    https://developer.apple.com/videos/wwdc/2014/#414

    0 讨论(0)
提交回复
热议问题