Мой метод возвращает NSNumber*, и я хочу протестировать этот метод. Поскольку моим фактическим возвращаемым значением является NSNumber*, я создаю новое ожидаемое значение NSNumber*, но оно терпит неудачу. Вот код:
NSNumber *cRating = [movie getRating:ratingDictionary ratingType:criticRating];
XCTAssertEqualObjects(cRating, [[NSNumber alloc]initWithInt:70], @"");
Ошибка:
[SFModelTest testGetCriticRatingMethod] failed: ((cRating) equal to ([[NSNumber alloc]initWithInt:70])) failed: ("70") is not equal to ("70")
Поскольку он говорит, что «70» не равно «70», я предполагаю, что это связано с alloc init. Некоторые вещи указателя, которые не равны. Может кто-нибудь помочь? Спасибо.
Изменить для комментария: добавление метода getRating
- (NSNumber *)getRating:(NSDictionary *)movieDic ratingType:(enum RatingsEnum) rating{
NSNumber *result = 0;
NSNumber *ratingNum = 0;
switch (rating) {
case userRating:
{
ratingNum = [movieDic objectForKey:@"audience_score"];
break;
}
case criticRating:
{
ratingNum = [movieDic objectForKey:@"critics_score"];
break;
}
default:
break;
}
if(ratingNum && ratingNum > 0)
{
result = ratingNum;
}
return result;
}
Метод возвращает NSNumber. И мой тест:
NSNumber *cRating = [movie getRating:ratingDictionary ratingType:criticRating];
XCTAssertEqualObjects(cRating, [[NSNumber alloc]initWithInt:70], @"");
Когда я делаю класс NSLOG, он возвращает __NSCFConstantString. Я сейчас в замешательстве.
getRating:ratingType:
как вы создаетеNSNumber
? - person nhgrif   schedule 21.01.2014cRating
. то естьNSLog(@"%@", [cRating class])
и конечно же это неNSString
или что-то еще - person Bryan Chen   schedule 21.01.2014[movie getRating:ratingDictionary ratingType:criticRating];
только на[[NSNumber alloc]initWithInt:70]
? - person ansible   schedule 21.01.2014@"70"
(строка) отличается от@70
(число) - person Bryan Chen   schedule 21.01.2014ratingDictionary
- person Bryan Chen   schedule 21.01.2014