के लिए सिस्टम दिनांक बदलें मैं एक विधि का परीक्षण कर रहा हूं जो -[NSDate date]
पर कॉल करता है, और कुछ तर्क करने के संदर्भ में सिस्टम समय का उपयोग करता है। मुझे यह जांचने की ज़रूरत है कि क्या तर्क साल के कुछ विशिष्ट दिनों पर सही है, लेकिन मैं उस दिन तक इंतजार नहीं कर सकता। तो यूनिट परीक्षण करते समय क्या मैं सिस्टम की तारीख प्रोग्रामेटिक रूप से बदल सकता हूं?कोको इकाई परीक्षण
10
A
उत्तर
12
आपको Mock object और उद्देश्य सी में उपयोग करने की आवश्यकता है, आप केवल उन्हीं विधियों को ओवरराइड करके श्रेणियों के साथ आसानी से कर सकते हैं।
// ------------- File: NSDate+NSDateMock.h
@interface NSDate (NSDateMock)
+(void)setMockDate:(NSString *)mockDate;
+(NSDate *) mockCurrentDate;
@end
// -------------- File: NSDate+NSDateMock.m
#import "NSDate+NSDateMock.h"
@implementation NSDate (NSDateMock)
static NSDate *_mockDate;
+(NSDate *)mockCurrentDate
{
return _mockDate;
}
+(void)setMockDate:(NSString *)mockDate
{
_mockDate = [NSDate dateWithString:mockDate];
}
@end
और इसके अलावा आप SwizzleClassMethod
void SwizzleClassMethod(Class c, SEL orig, SEL new) {
Method origMethod = class_getClassMethod(c, orig);
Method newMethod = class_getClassMethod(c, new);
c = object_getClass((id)c);
if(class_addMethod(c, orig, method_getImplementation(newMethod), method_getTypeEncoding(newMethod)))
class_replaceMethod(c, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod));
else
method_exchangeImplementations(origMethod, newMethod);
}
की आवश्यकता होगी और फिर अपने इकाई परीक्षण में आप इस
SwizzleClassMethod([NSDate class], @selector(date), @selector(mockCurrentDate));
[NSDate setMockDate:@"2007-03-24 10:45:32 +0200"];
NSLog(@"Date is: %@", [NSDate date]);
की तरह इसका इस्तेमाल करने में सक्षम हो जाएगा: उदाहरण के लिए आप निम्न श्रेणी के इस्तेमाल कर सकते हैं
संबंधित मुद्दे
- 1. इकाई परीक्षण
- 2. इकाई परीक्षण
- 3. इकाई परीक्षण
- 4. इकाई परीक्षण
- 5. इकाई परीक्षण
- 6. इकाई परीक्षण
- 7. इकाई परीक्षण
- 8. यूनिट परीक्षण कोको उपयोगकर्ता इंटरफ़ेस
- 9. यूनिट परीक्षण की इकाई की एक इकाई परीक्षण
- 10. Django इकाई परीक्षण
- 11. इकाई परीक्षण NHibernate UserTypes
- 12. इकाई परीक्षण अतुल्यकालिक आपरेशन
- 13. डीएओ इकाई परीक्षण
- 14. इकाई परीक्षण और निषेध?
- 15. आदिम इकाई-परीक्षण
- 16. इकाई परीक्षण संस्थापक
- 17. आपको इकाई परीक्षण
- 18. डब्ल्यूपीएफ व्यवहार इकाई परीक्षण
- 19. जावा इकाई परीक्षण ResourceBundle
- 20. प्रत्येक इकाई परीक्षण
- 21. जावास्क्रिप्ट सैंडबॉक्स इकाई परीक्षण
- 22. सी # इकाई परीक्षण
- 23. ZF2 इकाई परीक्षण प्रमाणीकरण
- 24. EntityFunctions.TruncateTime और इकाई परीक्षण
- 25. इकाई परीक्षण डेटा संग्रहण
- 26. इकाई परीक्षण विनाशक?
- 27. पोस्टमार्टम इकाई परीक्षण
- 28. इकाई परीक्षण मॉड्यूलर जावास्क्रिप्ट
- 29. MSTest इकाई परीक्षण श्रेणियों
- 30. इकाई परीक्षण नियमों
सामान्य रूप से, आप विशिष्ट तारीख को वापस करने के लिए श्रेणी में '- [NSDate date]' ओवरराइड कर सकते हैं। – brigadir