如何在Jest中模拟模块

时间:2020-09-14 05:00:10

标签: javascript reactjs unit-testing jestjs

我正在尝试嘲笑我的动作创建者之一。实际上,我正在测试我的React组件。我需要检查是否在某个事件上调用了动作创建者函数。我试图通过jest.mock模拟该函数,但抛出错误:

Do not import `@jest/globals` outside of Jest test environment.

这是到目前为止我尝试过的方法,但是它不起作用:

describe('>> SCREEN -- Tests Step1', () => {
  describe('• handleSubmit function tests', () => {
    beforeEach(() => {
      jest.mock('../../redux/modules/test/test', () => ({
        fetchUser : jest.fn()
      }))
    })

    it('Should call fetchUser when called', () => {
      handleSubmit({ value : '1234' })

      expect(fetchUser).toHaveBeenCalledTimes(1)
    })
  })
})

我也尝试过模拟测试服之外的功能。但这也不起作用。我不确定我在这里想念什么。

如果您需要更多详细信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

您可以采用的一种方法。

import * as api from "../../redux/modules/test/test";

test("...", () => {
    const userSpy = jest.spyOn(api, 'fetchUser');

    handleSubmit({ value : '1234' });

    expect(userSpy).toHaveBeenCalledTimes(1);
});