'How write unit test for receiving nsnotification asynchronous?
I call rest web servic with completion handler and if succeed I send NSNotification.
The problem is how to write unit test to assert that the notification is sent in case of success.
Any help will be appreciated.
Solution 1:[1]
This is how I test notifications:
func testDataFetched() {
weak var expectation = self.expectation(description: "testDataFetched")
//set the notification name to whatever you called it
NotificationCenter.default.addObserver(forName: NSNotification.Name("dataWasFetched"), object: nil, queue: nil) { notification in
//if we got here, it means we got our notification within the timeout limit
//optional: verify userInfo in the notification if it has any
//call fulfill and your test will succeed; otherwise it will fail
expectation?.fulfill()
}
//call your data fetch here
sut.fetchData()
//you must call waitForExpectations or your test will 'succeed'
// before the notification can be received!
// also, set the timeout long enough for your data fetch to complete
waitForExpectations(timeout: 1.0, handler: nil)
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
