# Testing overview ## How to test your code that uses the SDK The published SDK artifact doesn't include a fake, in-memory, or stub implementation of `RatepayClient` for you to import into your tests. What it does provide is a **plain interface** designed for exactly this purpose: you can mock it, fake it, or wrap it. In practice, that means the standard approach, mocking `RatepayClient` with whatever mocking library your project already uses, works cleanly: it's a normal public interface with no final classes or sealed restrictions blocking it. See [Unit testing the quickstart flow](/docs/developer/sdk/testing/unit-testing-the-quickstart-flow) for a worked example. ## Sandbox vs. mocked tests Mocking `RatepayClient` is for testing *your own code's logic* against the SDK's contract, branching on outcomes, mapping exceptions, retry logic etc, without making network calls. It doesn't validate that your actual request payloads are accepted by the real API. For that, run the same flow against `Environment.INTEGRATION` - see [Sandbox testing](/docs/developer/sdk/testing/sandbox-testing).