几天前,我明白应该如何使用OCMock为RestKit编写测试。
测试方法:
- (void)signUpWithUsername:(NSString *)username email:(NSString *)email password:(NSString *)password block:(SignUpBlock)block {
if (!username || !email || !password) {
return;
}
CTFUser *user = [CTFUser createObject];
user.username = username;
user.email = email;
user.password = password;
[_connection.manager postObject:user path:@"path" parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
block(YES);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
block(NO);
}];
}
测试用例(检查休息套件调用成功块后是否调用了自定义块): - (void)testBlockShouldReturnYesIfSuccess { id mockClient = [OCMockObject mockForClass:[AFHTTPClient class]];
RKObjectManager *manager = [[RKObjectManager alloc] init];
manager.HTTPClient = mockClient;
id mockMananger = [OCMockObject partialMockForObject:manager];
[[[mockMananger expect] andDo:^(NSInvocation *invocation) {
void (^successblock)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) = nil;
[invocation getArgument:&successblock atIndex:5];
successblock(nil, OCMOCK_ANY);
}] postObject:OCMOCK_ANY path:OCMOCK_ANY parameters:nil success:OCMOCK_ANY failure:OCMOCK_ANY];
SignUpBlock block = ^(BOOL success) {
XCTAssertTrue(success, @"");
};
CTFAPIConnection *connection = [[CTFAPIConnection alloc] initWithManager:mockMananger];
_accounts = [[CTFAPIAccounts alloc] initWithConnection:connection];
id mockAccounts = [OCMockObject partialMockForObject:_accounts];
[mockAccounts signUpWithUsername:@"username" email:@"email" password:@"password" block:block];
}
此测试通过。但是如何测试此请求和响应的映射是否正常?此测试不会检查我是否应该使用响应和请求制作一些JSON
夹具?下一步是什么?
我想测试什么? - 如果请求和响应映射正常(这对我来说很难实现测试应该如何)
提前谢谢
答案 0 :(得分:0)
好的,我找到了一些不错的资源。 https://github.com/RestKit/RestKit/wiki/Unit-Testing-with-RestKit。如果我理解我应该测试与实际请求隔离的JSON
灯具的映射,第二个好方法是创建一些只返回一些灯具的测试服务器。