xcuitest objective framework ios xcode xctest

ios - objective - xcode documentation



Pruebas XCTest y asíncronas en Xcode 6 (4)

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

¿Alguien sabe cómo hacerlo utilizando Xcode 6 Beta 3 (utilizando object-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.


Como lo hice en swift2

Paso 1: definir expectativas

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

Paso 2: diga a la prueba que cumpla con las expectativas justo debajo de donde captura la respuesta

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

Paso 3: Dile a la prueba que espere hasta que se cumpla la expectativa

waitForExpectationsWithTimeout(10)

PASO 4: hacer una aserción después de que finalice la llamada asíncrona

XCTAssertEqual(responseThatIGotFromAsyncRequest, expectedResponse)


Ejemplo de obj-c:

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