UnitTesting: assertThat аргументы несовместимого типа или указатель на целое число без приведения - PullRequest
0 голосов
/ 05 марта 2012

Я пытаюсь настроить 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);

Для некоторыхпричина, по которой мой тест не пройден, но я не могу понять, что не так.Тестовый пример неправильный, реализованный метод неправильный или он как-то связан с платформой OCMock в сочетании с сопоставителями OCHamcrest?

Я использую Xcode 4.2 с OCMock 1.66 и OCHamcrest 1.7.

Есть мысли?

...