1) Endpoint protocol was renamed to RequestConvertible in order to make it more descriptive.
2) Mock property is removed from Request. When the mock is created in one single place it is not really flexible for unit testing if you want to inject JSON dictionary or custom file dynamically. That's why MockProvider was introduced in order to improve mock behaviour:
In order to start mocking you have to do the following:
Create a mock provider
// Delay is optional, 0.0 by default.
let mockProvider = MockProvider(delay: 1.0) { endpoint in
switch endpoint {
case .fetchBoards:
// With response data from a file:
return Mock(fileName: "boards.json")
case .showBoard(let id):
// With response from JSON dictionary:
return Mock(json: ["id": 1, "title": "Balsa Fish"])
case .updateBoard(let id, let title):
// `Data` mock:
return Mock(
// Needed response
response: mockedResponse,
// Response data
data: responseData,
// Custom error, `nil` by default
error: customError
)
default:
return nil
}
}
Create a networking instance with your mock provider
Both real and fake requests can be used in a mix:
let networking = Networking<SharkywatersEndpoint>(mockProvider: mockProvider)
⚠️ Breaking change ⚠️
1)
Endpoint
protocol was renamed toRequestConvertible
in order to make it more descriptive. 2) Mock property is removed fromRequest
. When the mock is created in one single place it is not really flexible for unit testing if you want to inject JSON dictionary or custom file dynamically. That's whyMockProvider
was introduced in order to improve mock behaviour:In order to start mocking you have to do the following:
Create a mock provider
Create a networking instance with your mock provider
Both real and fake requests can be used in a mix: