Я пытаюсь написать модульные тесты для приложения iOS, которое использует фреймворк базы данных Parse, и после многих экспериментов, похоже, терпит неудачу при написании успешных модульных тестов. Я нашел несколько сообщений по тестированию асинхронного кода (Testing asynchronous call in unit test in iOS) и тестирования сетевых вызовов, но я еще не нашел способ тестирования вызовов на бэкэнд Parse с асинхронными обратными вызовами.Тестирование модулей Рамка анализа iOS
К примеру, кто-то может посоветовать, как я хотел бы проверить следующую строку кода:
[PFUser saveUser:userModelMock withBlock:^(BOOL success, NSError *error) {
}];
Я использую OCMock и рамки XCTest.
Любая помощь будет высоко оценена.
* EDIT * Это то, что я до сих пор, но, кажется, терпит неудачу
- (void)testSaveUser {
id userModelMock = [OCMockObject niceMockForClass:[UserModel class]];
id userControllerMock = [OCMockObject niceMockForClass:[self.userController class]];
[[userModelMock expect] saveInBackgroundWithBlock:[OCMArg any]];
[[userControllerMock stub] saveUser:userModelMock withBlock:[OCMArg any]];
[userModelMock verify];
}
Что это такое, что вы пытаетесь проверить? PFUser, надеюсь, имеет свои собственные модульные тесты, поэтому ваши тесты должны рассчитывать на то, что он работает как рекламируемый, и вы можете просто высмеять вызов saveUser: withBlock :. Если вы хотите проверить, что ваш асинхронный обратный вызов работает должным образом, этот ответ может помочь: http://stackoverflow.com/a/20694495/449161 –
Согласен, я бы предположил, что у Parse есть внутренние тесты - однако я подклассифицирую PFUser и создал контроллер, который обрабатывает все данные.Внутри контроллера у меня есть метод, который вызывает saveUser, поэтому в тесте мне нужно проверить saveUser: вызывается, когда я вызываю метод, который его обертывает. –
Если вы тестируете, что контроллер вызывает этот метод из другого метода, просто используйте макет и «ожидает» для объекта PFUser и вызовите метод контроллера из вашего теста. Если вызов асинхронный, следуйте модели из сообщения, которое вы связали. Или я чего-то не хватает? –