Я действительно новичок в этой вещи TDD и записываю тестовые примеры вообще, но я также очень хочу попасть в нее и понять. Хотя на данный момент у меня очень тяжелое время, чтобы окунуться в синтаксис и образ мыслей с помощью заглушки и насмешки.OCMock setup mock class, его свойства и получить базовое понимание
Но я также знаю, что мне просто нужно получить основную вину, чтобы получить момент «ааа».
Atm Я НЕ ТАК. Так что это самое основное, что я знаю, и это мой случай:
У меня есть, например, автомобиль как объект класса из CoreData. INIT является OFC
[MyCar alloc] initWithEntity:<(NSEntityDescription *)> insertIntoManagedObjectContext:<(NSManagedObjectContext *)>
Я хочу, чтобы тест:
- (CLLocationCoordinate2D) locationCoordinatesAtIndex: (NSInteger) index
{
CLLocationCoordinate2D returnValue
= CLLocationCoordinate2DMake(0.0f, 0.0f);
/* Sanity check */
if (index >= 0 && index < self.carsList.count)
{
MyCar* coolCar = self.carsList[index]; //array with MyCar objects
returnValue = CLLocationCoordinate2DMake(self.coolCar.latitude.doubleValue,
self.coolCar.longitude.doubleValue);
}
return returnValue;
}
Этот метод существует в CarViewController
Так что я имею в виду - Хорошо я буду издеваться над собой MyCar
CarViewController
и добавить фиксированные значения до self.coolCar.latitude
и self.coolCar.longitude
:
@interface CarViewController
@property (nonatomic, strong) MyCar *coolCar;
@property (nonatomic, strong) NSMutableArray *carsList; //because existing private in .m
@end
@interface MyCar (Test)
@property (nonatomic, strong) NSNumber *latitude; //because existing private in .m
@property (nonatomic, strong) NSNumber *longitude; //because existing private in .m
@end
@interface WTSTestCarLocation : XCTestCase
@property (nonatomic, strong) CarViewController *carVC;
@end
-(void)testCarLoc{
self.carVC = OCMClassMock([WTSARViewController class]);`
self.coolCar = [OCMockObject mockForClass:[MyCar class]]`
self.coolCar.latitude = @7.05444;
self.coolCar.longitude = @125.601087;
[self.carsLists addObject:self.coolCar];
OCMStub([self.carVC locationCoordinatesAtIndex:0]);
/* atm I just log */
NSLog(@"the location2DLat %f",[self.carVC locationCoordinatesAtIndex:0].latitude);`
}
я получаю ошибки, где компилятор говорит «doesNotRecognizeSelector:» провал на линии
self.coolCar.latitude = @7.05444;
Так Q: Мне нужно сделать частичный макет делать Insted? и как это будет, как с NSEntityDescription
и NSManagedObjectContext
Любая помощь, указатели и так далее ценится