Ktor provides a MockEngine that simulates HTTP calls without connecting to the endpoint.
MockEngine, you need to include the
ktor-client-mock artifact in the build script.
Share client configuration
Let's see how to use
MockEngine to test a client. Suppose the client has the following configuration:
CIOengine 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.