0

プロジェクト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を使用しています。

何かご意見は ?

4

0 に答える 0