【发布时间】:2021-04-26 04:11:25
【问题描述】:
我正在测试一个与 redux 连接的组件。我的组件使用useSelector,所以我使用来自this answer 的一些建议来模拟来自useSelector 的响应,效果很好。这是我的测试:
it("renders consistently and correctly", () => {
const store = createStore(rootReducer);
const spy = jest.spyOn(redux, "useSelector");
spy.mockReturnValue([
{
message: "This is a test success message",
status: "SUCCESS",
},
]);
const wrapper = mount(
<Provider store={store}>
<GlobalSnackbar />
</Provider>
);
expect(wrapper).toMatchSnapshot();
expect(wrapper.find("SnackbarNotification")).toHaveLength(1);
});
我想将这些测试分成多个it 语句,因为我想针对这个给定的场景测试更多的东西(或者可能来自mockReturnValue 的不同响应)。但是当我尝试将这两个 expect 语句分成 2 个不同的 it 语句时,第二个语句失败,出现以下错误:
Expected length: 1
Received length: 0
Received object: {}
109 | );
110 | expect(wrapper).toMatchSnapshot();
> 111 | expect(wrapper.find("SnackbarNotification")).toHaveLength(1);
我尝试复制和粘贴整个测试并一个接一个地运行它。第二个总是失败。我不确定为什么Recieved object 第二次是{}。不应该完全一样吗?我尝试在第一次测试结束时使用wrapper.unmount(),结果没有变化。我需要执行什么样的清理/重置才能使这样的一系列测试正常工作?
【问题讨论】:
标签: reactjs unit-testing react-redux jestjs enzyme