NSDateFormatter 메서드를 테스트하는 가장 좋은 방법은 무엇입니까?NSDateFormatter로 취약한 단위 테스트 방지
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]];
});
을
- (NSString *)formatStringFromDate:(NSDate *)date {
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setTimeStyle:NSDateFormatterShortStyle];
[f setDateStyle:NSDateFormatterNoStyle];
return [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'가 설정되어 있는지 테스트하고 있습니다. 나는 나의 질문을 위해 시험과 방법을 단순화했다. – squarefrog
테스트 할 코드는 어디에 있습니까? 보기 컨트롤러 또는 테이블보기 셀 하위 클래스에서? – e1985