Опитвам се да се подигравам на UIImagePickerController, за да тествам метод от ViewController (написан на Swift):
var imagePicker: UIImagePickerController!
...
func choosePhoto() {
imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .PhotoLibrary
self.presentViewController(imagePicker, animated: true, completion: nil)
}
и тестовия клас (написан на Objective-C):
Интерфейс:
@property (nonatomic, strong) ViewController *viewController;
Изпълнение:
- (void)setUp {
[super setUp];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *navigationController = [storyboard instantiateInitialViewController];
self.viewController = (ViewController *)[navigationController visibleViewController];
self.viewController.view;
}
....
- (void)testPicker {
id mockPicker = [OCMockObject mockForClass:[UIImagePickerController class]];
self.viewController.imagePicker = mockPicker;
[[mockPicker expect] setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[[(id)self.viewController expect] presentViewController:mockPicker animated:YES completion:nil];
[self.viewController choosePhoto];
[mockPicker verify];
}
Тестът е неуспешен, защото:
OCMockObject(UIImagePickerController): очакваният метод не е извикан: setSourceType:0
и
неуспешно: уловено "NSInvalidArgumentException", "-[MyApp.ViewController очаквам]: неразпознат селектор, изпратен до екземпляр 0x....
Може ли някой да ми помогне с това?
Много благодаря.