redux 如何为useEffect中的操作编写Enzyme单元测试用例

8ulbf1ek  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(181)

我正在写一段代码,它会在useEffect钩子中触发一个动作。代码如下:

useEffect(() => {
    if (error && vehicle && onInstallError) {
      onInstallError({
        action: "validateTireSize",
        message: "find tires that fit",
        warranty: planSkuName,
        vehicle: `${vehicle.year}|${vehicle.make}|${vehicle.model}`
      });
    }
  }, [error, onInstallError, vehicle, planSkuName]);

现在我需要用Enzyme编写单元测试,使它具有100%的代码覆盖率。有人能帮助我吗

tzcvj98z

tzcvj98z1#

您可以编写单元测试,通过模拟操作并验证是否正在调用该操作来测试useEffect挂接中的操作。
下面是一个示例代码片段。

// component.spec.ts

// import the actions into the test.
import { onInstallError } from './my-actions';

// mock the actions module to watch the onInstallError function.
jest.mock('./my-actions');

beforeEach(async () => {
     await act(async () => {
        render(<MyComponent />);
    });
});

test('calls onInstallError on error', () => {
    expect(onInstallError)
        .toHaveBeenCalledWith({
            action: "validateTireSize",
            message: "find tires that fit",
            warranty: '1',
            vehicle: `2012|toyota|tacoma`
        });
})

显然,组件中的errorvehicle变量需要是真实的,以验证它是否被调用。

相关问题