Skip to main content

Testing

tip

Our SDKs and Clients provide library and language-specific testing advice. For specific details, refer to the docs for the SDK or client you're using.

Testing is a first-class citizen in Reforge. We've designed it so that it is easy to test your code that uses Reforge.

Best Practices For Testing

The best practice for testing is to create a test environment and use a datafile. A datafile is a JSON snapshot of your configuration, which allows the Reforge client to boot up in a consistent state without talking to the Reforge server.

You can then use mocking to override specific values as-needed, when you are testing the behavior of a particular feature flag or config.

Mocking

Backend SDKs

The primary way to test Reforge is by mocking out calls to Reforge. Here are some examples:

@Test
void testReforge(){
ConfigClient mockConfigClient = mock(ConfigClient.class);
when(mockConfigClient.liveString("sample.string")).thenReturn(FixedValue.of("test value"));
when(mockConfigClient.liveLong("sample.long")).thenReturn(FixedValue.of(123L));

MyClass myClass = new MyClass(mock(ConfigClient.class));

// test business logic

}

Frontend Libraries

Rather than talking to the server, use setConfig or use a Provider manually with your test setup.

Don't call reforge.init. Instead, use setConfig to set up your scenario.

reforge.setConfig({
turbo: true,
defaultMediaCount: 3,
});

Read the full JavaScript testing docs.

Testing with DataFiles

Mocking out all of the Reforge calls can be tedious, so we've added a feature called DataFiles to Reforge Launch.

Having your tests/CI reach out to Reforge to get the latest configuration is a viable approach, but for consistency & reproducibility, many of us prefer to have full control over the configuration used to run tests. Datafiles are perfect for this use case.