В XCTest с быстрым вы можете определить фиктивные объекты в тестовой функции вам нужно его. Как такXCTest и используя фиктивные объекты в качестве приемников уведомления
func testFunction(){
class mockClass: AnyObject{
func aFunction(){
}
}
}
Я пытаюсь использовать эти фиктивные объекты, чтобы проверить, что другая функция отправляет правильное уведомление при определенном условии (в моем случае, когда уведомление об успешности транслируется с кодом статуса 204 для объекта.
Проблема, с которой я столкнулась, заключается в том, что я получаю ошибку «Нераспознанный селектор» хотя функция deletedSuccess()
явно там/
Heres некоторый код дамп
func testDelete(){
let expectation = expectationWithDescription("Post was deleted")
class MockReciever : AnyObject {
func deleteSuccess(){
println("delete successfull")
expectation.fulfill()
}
}
let mockReciever = MockReciever()
NSNotificationCenter.defaultCenter().addObserver(mockReciever, selector: "deleteSuccess", name: PostDeletedNotification, object: post)
let response = NSHTTPURLResponse(URL: NSURL(), statusCode: 204, HTTPVersion: nil, headerFields: nil)
let request = NSURLRequest()
post.deleteCompletion(request, response: response, data: nil, error: nil)
waitForExpectationsWithTimeout(30, handler: { (error) -> Void in
if error != nil{
XCTFail("Did not recieve success notification")
} else {
XCTAssertTrue(true, "post deleted successfully")
}
NSNotificationCenter.defaultCenter().removeObserver(mockReciever)
})
}
Есть ли какие-то проблемы с использованием фиктивных объектов и селекторы так, что я не знаю о?
Не совсем дублированный вопрос. Я пробовал делать mock-объекты NSObject и UIViewController (поскольку это контроллер представления, который получает уведомление в самом приложении), и каждый раз я получал ту же ошибку. Мой вопрос заключается в том, могут ли макетные объекты использоваться в качестве наблюдателя. Я попробую завтра ожидать функциюNotification завтра и сообщит вам, если она работает – AndyRyan
Работала с благодарностью. Даже используя блок завершения для тестирования вещей, которые должны произойти до отправки уведомления – AndyRyan
Да, это отличный способ проверить NSNotificationCenter. Существует аналогичный метод для тестирования KVO. – kean