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.