XCTest and asynchronous testing in Xcode 6
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); } }];}
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)}
Session 414 covers async testing in Xcode6