Handling errors
To test the handling of errors in the URLSession
call to the web service, we first need to enhance URLSessionProtocolMock
. Follow these steps to test that an error in fetching data is passed down to the caller of the APIClient
instance:
- Add the following property to
URLSessionProtocolMock
:// URLSessionProtocolMock.swift var dataForDelegateError: Error?
- Next, add the following handling of the error to the start of
data(for:delegate:)
:// URLSessionProtocolMock.swift if let error = dataForDelegateError { throw error }
If there is an error set to the dataForDelegateError
property, we throw it before we do anything else in this method.
- Now, we are ready to add the test method to
APIClientTests
:// APIClientTests.swift func test_toDoItems_whenError_shouldPassError() async throws { let urlSessionMock = URLSessionProtocolMock() let expected = NSError(domain: "", code: 1234) urlSessionMock.dataForDelegateError...