OCMock o ancak, varsayılan olarak, bir nil nesne için varsayılan ötesinde bir şey yapmayın, (myFloatValue mülkiyet dahil) protokolünü uygulamak sizin için yöntemler yaratacak Eğer için myFloatProperty her zaman belirli bir değer döndürmek isterseniz, OCMStub kullanarak o tesisin getter saplama gerekir:
id mock = OCMProtocolMock(@protocol(TestDelegate));
[mock setMyFloatProperty:100.0f];
NSLog(@"%f", [mock myFloatProperty]); // prints 0.000000
OCMStub([mock myFloatProperty]).andReturn(100.0f);
NSLog(@"%f", [mock myFloatProperty]); // prints 100.000000
ise Testiniz sırasında mülkün değiştirilebilmesini istiyorsanız, birkaç seçenek vardır. En kolay yol, test vakası sınıfınızda bir saplama özelliği oluşturmak ve saplama yöntemlerini bu özelliğe yönlendirmektir. myFloatProperty basit bir tür olduğu için,
@interface MyTestCase : XCTestCase
@property CGFloat stubMyFloatProperty;
@end
@implementation MyTestCase
- (void)testTestDelegate {
id mock = OCMProtocolMock(@protocol(TestDelegate));
[[[[mock stub] ignoringNonObjectArgs] andCall:@selector(setStubMyFloatProperty:) onObject:self] setMyFloatProperty:0.0f];
OCMStub([mock myFloatProperty]).andCall(self, @selector(stubMyFloatProperty));
[mock setMyFloatProperty:100.0f];
NSLog(@"%f", [mock myFloatProperty]); // prints 100.000000
}
@end
Not sen keyfi değerleri için düzgün saplama amacıyla standart dışı OCMock sözdizimi kullanmak zorunda. Daha fazla bilgi için this answer'a bakın.
CLLocation'ı nasıl ekleyebilirim? Aynı yöntemi float için denedim, fakat yerine bir CLLocation'a taktım ve bir null aldım. – iamarnold
Kodunuzu gönderir misiniz? Benim için iyi çalışıyor. –