Как у меня есть два теста в одном файле с PollyJS и Jest?

#javascript #node.js #jestjs #pollyjs

Вопрос:

У меня странная проблема с PolyJS и шуткой. У меня есть 2 теста в одном файле-первый проходит, а второй возвращает ошибку из компонента fetch in: TypeError: Cannot read property 'status' of undefined"

Не имеет значения, какой из них второй. Отдельно каждый тест проходит, но вместе второй проваливается, так что похоже, что Полли просто не выполняет выборку из своих записей.

Я пробовал разные вещи, как context.polly.flush() в afterEach , но, похоже, это не работает. Есть какие-нибудь идеи?

Полли конфиг:

 export const setupDefaultPolly = () => {
  const context = setupPolly({
    mode: process.env.POLLY_MODE,
    adapters: [require('@pollyjs/adapter-node-http')],
    persister: require('@pollyjs/persister-fs'),
    persisterOptions: {
      fs: {
        recordingsDir: path.resolve(__dirname, '../__recordings__'),
      },
    },
  })
  return context
 

Мой тестовый файл:

 describe('MyComponent', () => {
  setupDefaultPolly()

  it('should render correctly', async () => {
    const fetchSpy = jest.spyOn(global, 'fetch')    
    let wrapper
    
    await act(async () => {
      wrapper = mount(<MyComponent thing="exists" />)
    })

    expectLoadingPage(wrapper).toBeTruthy()
    await waitFor(() => {
      wrapper.update()
      expectLoadingPage(wrapper).toBeFalsy()
    })

    expect(wrapper.text()).toContain('exists')
    expect(withoutMuiID(wrapper)).toMatchSnapshot()
    expect(fetchSpy).toHaveBeenCalledTimes(3)
  })

  it('should display error when not found', async () => {
    let wrapper
    await act(async () => {
      wrapper = mount(<MyComponent thing="not-exists" />)
    })

    expectLoadingPage(wrapper).toBeTruthy()

    await waitFor(() => {
      wrapper.update()
      expectLoadingPage(wrapper).toBeFalsy()
    })

    expect(wrapper.text()).toContain('Not found: not-exists')
    expect(withoutMuiID(wrapper)).toMatchSnapshot()
  })
})