Testing

View as Markdown

Fern provides comprehensive testing for your SDKs through generated and handwritten tests.

Generated tests

Pro and Enterprise feature

This feature is available only for the Pro and Enterprise plans. To get started, reach out to support@buildwithfern.com.

Fern auto-generates tests that must pass before SDK release. Fern generates a GitHub workflow in each SDK repository that runs unit tests and any enabled mock server tests on every pull request, commit, and release.

Unit tests

Fern generates unit tests for all SDK languages. They verify individual methods in isolation without making network calls.

Mock server tests

Mock server (wire) tests run your SDK against a mock server generated from your API definition. They verify that the SDK sends HTTP requests and receives HTTP responses as expected. These tests are generated for all endpoints in a service.

Mock server tests are available for TypeScript, Python, Go, Java, C#, PHP, Swift, and Rust. Configure mock server tests in your generators.yml:

LanguageConfigurationDefault
TypeScriptgenerateWireTeststrue
Pythonenable_wire_testsfalse
GoenableWireTeststrue
Javaenable-wire-testsfalse
.NET/C#generate-mock-server-teststrue
PHPenable-wire-testsfalse
SwiftenableWireTeststrue
RustenableWireTestsfalse

Integration tests

Enterprise feature

This feature is available only for the Enterprise plan. To get started, reach out to support@buildwithfern.com.

Handwritten integration tests run against your real API server to test end-to-end functionality with live data.

Adding additional tests

You can add custom tests directly to your SDK repositories. Include test files in your .fernignore file to prevent overwrites during regeneration.