Testing
Ktor provides a MockEngine that simulates HTTP calls without connecting to the endpoint.
Add dependencies
Before using MockEngine
, you need to include the ktor-client-mock
artifact in the build script.
Usage
Share client configuration
Let's see how to use MockEngine
to test a client. Suppose the client has the following configuration:
The
CIO
engine is used to make requests.The Json plugin is installed to deserialize incoming JSON data.
To test this client, its configuration needs to be shared with a test client, which uses MockEngine
. To share a configuration, you can create a client wrapper class that takes an engine as a constructor parameter and contains a client configuration.
Then, you can use the ApiClient
as follows to create an HTTP client with the CIO
engine and make a request.
Test a client
To test a client, you need to create a MockEngine
instance with a handler that can check request parameters and respond with the required content (a JSON object in our case).
Then, you can pass the created MockEngine
to initialize ApiClient
and make required assertions.
You can find the full example here: client-testing-mock.