プロジェクトTDDをセットアップしようとしているので、次の単体テストがあります。
- (void)testOnDoesUsernameExistsShouldReturnFalseWhenInvalidJSONResponseFromService {
id mock = [OCMockObject partialMockForObject:(NSObject *) (id <ServiceHelperProtocol>) self.serviceHelper];
[[[mock stub] andReturn:@"invalid-json-response"] get:[OCMArg any]];
assertThat([self.signUpService doesUsernameExist:@"testusername"], true);
}
このテストは、次のメソッドに対して実行されます。
- (BOOL)doesUsernameExist:(NSString *)userName {
NSString *url = [[NSString alloc] initWithFormat:@"%@/%@/api/signup.username_exists/?username=%@", kAPPLICATION_HOST, kAPPLICATION_NAME, userName];
NSString *responseString = [self.serviceHelper get:url];
if (responseString != nil && ![responseString isEqualToString:@""]) {
@try {
NSDictionary *dictionary = [responseString JSONValue]; // auto-released
NSString *usernameExists = [dictionary objectForKey:@"username_exists"];
return usernameExists != nil && ![usernameExists isEqualToString:@"null"];
}
@catch (NSException *e) {
NSLog(@"Unable to parse JSON: %@", e.description);
}
}
[responseString release];
[url release];
return false;
}
このテストを実行すると、94行目(assertThat行)に次の警告が表示されます。
passing argument 2 of 'HC_assertThatWithLocation' makes pointer from integer without a cast
マクロを置き換えると、次のコード行が表示されます。
HC_assertThatWithLocation(self, [self.signUpService doesUsernameExist:@"testusername"], HC_is(0), "_file_name_", 0);
どういうわけか私のテストは失敗しますが、何が悪いのか理解できません。テストケースは間違っていますか、実装されたメソッドは間違っていますか、それともOCHamcrestマッチャーと組み合わせたOCMockフレームワークと関係がありますか?
OCMock1.66とOCHamcrest1.7の両方でXcode4.2を使用しています。
何かご意見は ?