-[NSDate date]
'u çağıran bir yöntemi test ediyorum ve bazı mantık yapmak için sistem süresini referans olarak kullanıyorum. Mantığın yıl içinde belirli günlerde doğru olup olmadığını test etmem gerekiyor ama o güne kadar bekleyemem. Birim testi ne zaman sistem tarihini değiştirebilirim?Kakao birimi sınama için sistem tarihini değiştir
10
A
cevap
12
Mock object kullanmanız gerekiyor ve Objective C'de, yalnızca ihtiyacınız olan yöntemleri geçersiz kılarak kategorilerle kolayca yapabilirsiniz.
// ------------- 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
ve ek olarak
Eğer SwizzleClassMethodvoid 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);
}
gerekir ve ardından birim testinde bu
SwizzleClassMethod([NSDate class], @selector(date), @selector(mockCurrentDate));
[NSDate setMockDate:@"2007-03-24 10:45:32 +0200"];
NSLog(@"Date is: %@", [NSDate date]);
gibi kullanmak mümkün olacak: Örneğin aşağıdaki kategorisini kullanabilirsiniz
İlgili konular
- 1. Asenkron işlevi sınama birimi
- 2. Oracle'a sistem tarihini ekleme
- 3. Swift birimi sınama ve "sınama için oluştur" hataları
- 4. Dosya yaratma tarihini değiştir
- 5. Hangi C birimi sınama çerçevesi?
- 6. Microsoft Birimi Sınama hatası, DLL yüklenemedi
- 7. Modül işlevleri için Python birimi sınama adlandırma kuralı
- 8. Sistem mimarisinin kullanılabilirlik tasarımını sınama aracı
- 9. Nasıl bir dizeye sistem para birimi simgesi almak için
- 10. Neden "Sınama tipi için çoğaltıcı değiştir" alıyorum ve nasıl düzeltileceğini
- 11. .NET 2.0 kodu - Birim sınama birimi ile test
- 12. Program Ağ Bağlantısı Sistem Ağını (Proxy) değiştir
- 13. Sistem tarihini alın ve gün, ay ve yılı bölün.
- 14. Breadcrumb Gezinme Kakao için
- 15. Sistem başlangıcında bir uygulamayı nasıl başlatırım? (Mac OSX, Kakao)
- 16. Kakao
- 17. Birim testi Kakao Kullanıcı Arabirimi
- 18. Yazma Birimi Testleri
- 19. alaycı Kakao nesneleri
- 20. Alt Dizge için Dize Sınama?
- 21. Testng sınama paketi sınama sınıfı yürütme sırasını sınama
- 22. Java'daki para birimi alt birimi (azınlık birimi) sembolünü nasıl bulabilirim?
- 23. GHC: derleme tarihini ekle
- 24. jsposs sistem özelliklerini bir jsp dosyasında oku/değiştir
- 25. Kakao/Bindings'de hata ayıklama aracı Kakao
- 26. Kakao sarıcı
- 27. Kakao setAnimationDidStopSelector
- 28. Yarının tarihini tanımlamak için Rails yolu nedir?
- 29. Dizinin bölüm hava tarihini almak için API
- 30. Python Birimi İki sahte nesneyle sınama, çağrı sırasını doğrulama nasıl yapılır?
Genel olarak, belirli bir tarihi döndürmek için kategorideki '- [NS Tarih tarihi] 'ni geçersiz kılabilirsiniz. – brigadir