Caution
This package is only compatible with the Launchdarkly React SDK. There is a new major version of the React SDK in our js-core monorepo. At this time, we are NOT planning to update this package to be compatible with the new major version. Please see our docs for mock testing recommendations.
Easily unit test LaunchDarkly feature flagged components with jest 👏
yarn add -D jest-launchdarkly-mockor
npm install jest-launchdarkly-mock --save-devThen in jest.config.js add jest-launchdarkly-mock to setupFiles:
// jest.config.js
module.exports = {
setupFiles: ['jest-launchdarkly-mock'],
}Use the only 3 apis for test cases:
-
mockFlags(flags: LDFlagSet): mock flags at the start of each test case. Only mocks flags returned by theuseFlagshook. -
ldClientMock: a jest mock of the ldClient. All methods of this object are jest mocks. -
resetLDMocks: resets both mockFlags and ldClientMock.
import { mockFlags, ldClientMock, resetLDMocks } from 'jest-launchdarkly-mock'
describe('button', () => {
beforeEach(() => {
// reset before each test case
resetLDMocks()
})
test('flag on', () => {
// arrange
// You can use the original unchanged case, kebab-case, camelCase or snake_case keys.
mockFlags({ devTestFlag: true })
// act
const { getByTestId } = render(<Button />)
// assert
expect(getByTestId('test-button')).toBeTruthy()
})
test('identify', () => {
// arrange
mockFlags({ 'dev-test-flag': true })
// act
const { getByTestId } = render(<Button />)
fireEvent.click(getByTestId('test-button'))
// assert: identify gets called
expect(ldClientMock.identify).toBeCalledWith({ key: 'aa0ceb' })
})
})