
Statsig provides tools that let you test configurations quickly while ensuring reliable outcomes. This page highlights key features to help you test efficiently.

***

## Overrides: test features, experiments, or holdouts

Overrides allow you to manually configure [features](/feature-flags/overrides#adding-an-override), [experiments](/experiments/setup/overrides), or [holdouts](/experiments/holdouts-introduction) for testing purposes. This method enables safe testing without affecting live production data or skewing experiment results. Statsig excludes overrides from Pulse analysis to maintain unbiased results.

* Use **Segments** to target overrides to pre-production environments or specific groups (e.g., employees) for testing.

{% figure %}
![Feature Override Example](/images/tutorials/testing/testing-feature-override.png)
{% /figure %}

{% figure %}
![Experiment Override Example](/images/tutorials/testing/testing-experiment-override.png)
{% /figure %}

For more details on adding overrides, go to:

* [Feature Overrides](/feature-flags/overrides#adding-an-override)
* [Experiment Overrides](/experiments/setup/overrides)
* [Holdout Overrides](/experiments/holdouts-introduction)

***

## Unit testing with Statsig

Statsig's server SDKs offer a `localMode` feature that disables network access, ensuring that tests run locally and independently of production systems. When `localMode` is active, the SDK returns default values, allowing you to mock features and experiments in a controlled test environment.

### Override APIs for testing

You can use the `overrideGate` and `overrideConfig` APIs to set specific overrides for users or globally during testing.

```js
function overrideGate(
    gateName: string,
    value: boolean,
    userID?: string,
): void;
```

```js
function overrideConfig(
    configName: string,
    value: object,
    userID?: string,
): void;
```

For example, to override a gate for testing:

```js
statsig.overrideGate("example_gate", true);
```

* For more information on mocking Statsig for testing, go to [Node.js Server SDK](/server/nodejsServerSDK#how-can-i-mock-statsig-for-testing) or [JavaScript Client SDK](/client/javascript-sdk#testing).

***

## Environments: configuring Development, Staging, and Production

Statsig lets you assign environments to feature gates, experiments, and events. By default, Statsig assigns checks without a defined environment to **Production**. You can customize environments (such as **Development**, **Staging**, or **Production**) and use them to target different versions of feature gates or segments.

* Non-production events appear in diagnostics and Statsig uses them to track cumulative exposures and metric results when testing experiments in lower environments with **Enable for Environments**. Production data is prioritized for final Pulse result analyses.

### Customizing environments

You can map your internal environments to Statsig's built-in environments or create custom mappings. Common setups include:

* Assigning Dev One boxes to **Development**.
* Creating an **Early Access** slice (e.g., 1% of production users) as part of the **Production** environment for phased rollouts.

For more details on environments, go to the [Statsig blog post](https://blog.statsig.com/environments-on-statsig-6a818805b3c2).

***
