我正在尝试弄清楚如何为客户端后端代码编写单元测试,但到目前为止我还没有成功。我在单元测试方面经验不足,所以我阅读了 This , This , andThis
并阅读了一些与我所问内容类似的问题,但我还没有完全弄清楚我应该如何为客户端后端编写单元测试。
- (void)testThatItGetsAllUsers
{
// given
XCTestExpectation *expectation = [self expectationWithDescription:@" fetch all users"];
// when
[[Backend sharedInstance] getAllUsers:^(NSArray * arr) {
XCTAssertNotNil(arr);
[expectation fulfill];
}andFailure:^(NSError * err) {
XCTAssert((err != nil), @"get all users request failed with error:\t%@", err);
}];
[self waitForExpectationsWithTimeout:5 handler:^(NSError *error) {
// request not successfull
XCTAssert((error != nil), @"get all users from server did not return any data:\t%@", error);
}];
// then
}
如果有人能指出我做错了什么并且任何额外的知识将不胜感激,那将非常有帮助!
最佳答案
需要修改waitForExpectationsWithTimeout如下
[self waitForExpectationsWithTimeout:INT16_MAX handler:^(NSError *error) {
BOOL flag = (error == nil);
XCTAssert(flag, @"get all users from server did not return any data:\t%@", error);
}];
并且还添加到您的 andFailure block [expectation fulfill] 像这样:
andFailure:^(NSError * err) {
[expectation fulfill];
XCTAssert((err != nil), @"get all users request failed with error:\t%@", err);
}];
如果您想了解更多关于异步测试的信息,请查看 nshipster blog . XCTestExpectation 有一个很好的解释以及示例。
关于ios - iOS 中的单元测试完成 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28614518/