Testing in Ktor Client
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
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.