gpt4 book ai didi

reactjs - 如何使用 Jest 模拟第三方 React 组件?

转载 作者:行者123 更新时间:2023-12-05 01:10:29 24 4
gpt4 key购买 nike

TLDR; 模拟从第三方库导入的 React 组件的正确方法是什么?

我正在测试一个名为 <App/> 的组件.它使用名为 <Localize/> 的第三部分组件。由名为 localize-toolkit 的库提供.

我在模拟 <Localize/> 时遇到了一些问题使用 Jest。

这是我尝试模拟它的方法。

jest.mock('localize-toolkit', () => ({
// Normally you pass in a key that represents the translated caption.
// For the sake of testing, I just want to return the key.
Localize: () => (key:string) => (<span>{key}</span>)
}));

我已经为 <App/> 编写了一个单元测试。看起来像这样。

it('Test', () => {
const component = render(<App/>);
expect(component).toMatchSnapshot();
}
)

它会通过,但是这是返回的警告消息。

Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render.

当我查看快照时,我会看到一系列句点“...”,其中应该出现本地化标题。

我不是在 mock Localize组件正确吗?

最佳答案

这是我最终的做法。

请注意第三方组件 Localize 需要如何作为函数返回。

jest.mock('localize-toolkit', () => ({
Localize: ({t}) => (<>{t}</>)
}));

如果有多个组件,而你只想模拟其中一个,你可以这样做:

jest.mock("localize-toolkit", () => {
const lib = jest.requireActual("localize-toolkit");

return {
...lib,
Localize: ({t}) => (<>{t}</>),
};
});

关于reactjs - 如何使用 Jest 模拟第三方 React 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64034748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com