jest-launchdarkly-mock
Version:
Easily unit test LaunchDarkly feature flagged components with jest
83 lines (59 loc) • 2.67 kB
Markdown
# jest-launchdarkly-mock
[](https://www.npmjs.com/package/jest-launchdarkly-mock)
[](https://www.npmjs.com/package/jest-launchdarkly-mock)
[](https://opensource.org/licenses/Apache-2.0)
[](http://makeapullrequest.com/)
[](https://github.com/launchdarkly/jest-launchdarkly-mock/stargazers)
[](https://twitter.com/intent/tweet?text=Check%20out%20jest-launchdarkly-mock%20by%20%40launchdarkly%20https%3A%2F%2Fgithub.com%2Flaunchdarkly%2Fjest-launchdarkly-mock%20%F0%9F%91%8D)
> **Easily unit test LaunchDarkly feature flagged components with jest** :clap:
This package is only compatible with the react sdk.
## Installation
```bash
yarn add -D jest-launchdarkly-mock
```
or
```bash
npm install jest-launchdarkly-mock --save-dev
```
Then in `jest.config.js` add jest-launchdarkly-mock to setupFiles:
```js
// jest.config.js
module.exports = {
setupFiles: ['jest-launchdarkly-mock'],
}
```
## Usage
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 the `useFlags` hook.
* `ldClientMock`: a jest mock of the [ldClient](https://launchdarkly.github.io/js-client-sdk/interfaces/_launchdarkly_js_client_sdk_.ldclient.html). All
methods of this object are jest mocks.
* `resetLDMocks` : resets both mockFlags and ldClientMock.
## Example
```tsx
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' })
})
})
```