在Xcode 6中进行XCTest和asynchronoustesting
所以苹果在Xcode 6的发布logging中说,我们现在可以直接使用XCTest进行asynchronoustesting。
任何人都知道如何使用Xcode 6 Beta 3(使用Objective-C或Swift)? 我不想要已知的信号量方法,而是新的苹果方式。
我search了发布的音符和更多,但我什么也没find。 XCTest标题也不是很明确。
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); } }]; }
会议video是完美的,基本上你想要做这样的事情
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涵盖了Xcode6中的asynchronoustesting
我在swift2中做了些什么
第一步:定义期望
let expectation = self.expectationWithDescription("get result bla bla")
步骤2:告诉testing在下面捕获响应的地方完成预期
responseThatIGotFromAsyncRequest = response.result.value expectation.fulfill()
第三步:告诉考试等到期望完成
waitForExpectationsWithTimeout(10)
STEP 4:asynchronous调用完成后断言
XCTAssertEqual(responseThatIGotFromAsyncRequest, expectedResponse)
- sorting一个NSArray的NSDictionary对象的最佳方法?
- 无法更改项目中的包ID,变灰
- 在2017年用IBDesignable绘制虚线(而不是虚线)
- EXC_BAD_ACCESS in heightForRowAtIndexPath iOS
- 什么时候应该使用UIImagePickerControllerSourceTypePhotoLibrary而不是UIImagePickerControllerSourceTypeSavedPhotosAlbum?
- IOS:一个IBAction多个button
- 带有标识符的应用程序ID不可用。 请input不同的string
- 使用in_app或latest_receipt_info获取自动更新iOS 7样式事务的最新收据?
- 应用程序被拒绝,但我不使用UDID