Какова наилучшая практика тестирования методов NSDateFormatter? Например, предположим, что у меня есть метод:Избегайте хрупких модульных тестов с помощью NSDateFormatter
- (NSString *)formatStringFromDate:(NSDate *)date {
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setTimeStyle:NSDateFormatterShortStyle];
[f setDateStyle:NSDateFormatterNoStyle];
return [f stringFromDate:date];
}
Есть два способа я могу думать о тестировании этого метода с помощью Киви:
1) Создать тот же форматировщик в тестовом модуле:
it(@"should format a date", ^{
NSDate *date = [NSDate date];
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setTimeStyle:NSDateFormatterShortStyle];
[f setDateStyle:NSDateFormatterNoStyle];
[[[testObject formatStringFromDate:date] should] equal:[f stringFromDate:date]];
});
2) Явное написать предполагаемый вывод:
it(@"should format a date", ^{
NSDate *date = [NSDate dateWithTimeIntervalSince1970:1385546122];
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setTimeStyle:NSDateFormatterShortStyle];
[f setDateStyle:NSDateFormatterNoStyle];
[[[testObject formatStringFromDate:date] should] equal:@"9:55 am"];
});
Теперь мне, # 1 кажется немного излишним. Я знаю, что тест пройдет, поскольку я по существу дублирую метод в своем модульном тесте.
Метод № 2 - это не стартер, так как он невероятно хрупок. Он полностью полагается на теперешние тестеры, которые вы ожидаете.
Итак, мой вопрос: есть ли более подходящий метод для проверки этого метода или я должен просто пойти с помощью метода испытаний №1.
Какова цель теста? Проверить, работает ли NSDateFormatter? –
Я действительно тестирую, что 'UITableViewCell' имеет набор' detailTextLabel.text', когда присутствует свойство date. Я упростил тест и метод для моего вопроса. – squarefrog
Где код, который вы хотите проверить? В контроллере представления или в подклассе ячейки представления таблицы? – e1985