XCTest y testings asincrónicas en Xcode 6

Entonces Apple dijo en la nota de lanzamiento de Xcode 6 que ahora podemos hacer testings asíncronas directamente con XCTest.

¿Alguien sabe cómo hacerlo usando Xcode 6 Beta 3 (usando el objective-C o Swift)? No quiero el método de semáforo conocido, sino la nueva forma de Apple.

Busqué en la nota publicada y más, pero no encontré nada. El encabezado XCTest tampoco es muy explícito.

Obj-C ejemplo:

- (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); } }]; } 

El video de las sesiones es perfecto, básicamente quieres hacer algo como esto

 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) } 

La session 414 cubre testings asincrónicas en Xcode6

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

Como lo hice en swift2

Paso 1: defina la expectativa

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

Paso 2: diga la testing para cumplir con la expectativa justo debajo de donde captura la respuesta

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

Paso 3: dile a la testing que espere hasta que se cumpla la expectativa

 waitForExpectationsWithTimeout(10) 

STep 4: hacer una aserción después de que finaliza la llamada asincrónica

 XCTAssertEqual(responseThatIGotFromAsyncRequest, expectedResponse)