我正在试图弄清楚如何为客户端后端代码编写单元测试,但到目前为止我还没有成功。我对单元测试不太熟悉,所以我看了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
}
如果有人可以指出我做错了什么并且感谢任何额外的知识,那将是非常有帮助的!
答案 0 :(得分:1)
您需要修改 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:^(NSError * err) {
[expectation fulfill];
XCTAssert((err != nil), @"get all users request failed with error:\t%@", err);
}];
如果您想了解有关异步测试的更多信息,请查看nshipster blog。 XCTestExpectation和示例有一个很好的解释。