Skip to content

bohdanbirdie/vitest-launchdarkly-mock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vitest-launchdarkly-mock

npm version npm downloads License PRs Welcome

Star on GitHub

Easily unit test LaunchDarkly feature flagged components with Vitest 👏

This package is a rip-off from jest-launchdarkly-mock, just adapted for Vitest.

This package is only compatible with React SDK.

Installation

yarn add -D vitest-launchdarkly-mock

or

npm install vitest-launchdarkly-mock --save-dev

Then in vite.config.js add vitest-launchdarkly-mock to setupFiles:

// vite.config.ts

export default defineConfig(() => {
    return {
        test: {
            setupFiles: ['./node_modules/vitest-launchdarkly-mock/dist/index.js'],
        }
    }
});

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 Vitest mock of the ldClient. All methods of this object are Vitest mocks.

  • resetLDMocks : resets both mockFlags and ldClientMock.

Example

import { mockFlags, ldClientMock, resetLDMocks } from 'vitest-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' })
  })
})

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published