Trong hầu hết các lớp học của tôi làm việc với giá trị mặc định tôi làm cho giá trị mặc định đối tượng settable:Làm cách nào để kiểm tra với NSUserDefaults?
@property(retain) NSUserDefaults *defaults;
Đây là nghĩa vụ phải thực hiện kiểm tra dễ dàng hơn:
// In a nearby test class:
- (void) setUp {
[super setUp];
NSUserDefaults *isolatedDefaults = [[NSUserDefaults alloc] init];
[someObjectBeingTested setDefaults:isolatedDefaults];
}
Nhưng bây giờ tôi đã phát hiện ra sau đó khi tôi tạo một đối tượng mặc định mới, đã có một số giá trị trong đó. Điều đó có thể không? Tôi nghĩ rằng tôi có thể tạo ra một đối tượng mặc định rỗng, bị cô lập bằng cách gọi -init
. Tôi có một lỗi nào đó trong mã thử nghiệm không, hoặc tôi có thực sự phải làm điều gì đó phức tạp hơn (như stubbing hoặc mocking) nếu tôi muốn kiểm tra mã dựa trên mặc định của mình không?
Cảm ơn bạn đã tạo điều này! – Palimondo
rất đẹp, cảm ơn! Bây giờ tôi đang sử dụng lớp của bạn, nhưng thay vì tiêm 'NSUserDefaults' làm param cho' someObjectBeingTested', tôi đang sử dụng 'Kiwi' với khả năng nhạo báng của nó. Sử dụng một cái gì đó như: 'id transientDefaults = [NSUserDefaults transientDefaults]; [NSUserDefaults stub: @selector (standardUserDefaults) vàReturn: transientDefaults]; ' – kernix