我基本上有一个React网站,并且我在源代码和测试代码中都使用了打字稿。我已经将i18next和react-i18next库集成到我的项目中,以支持翻译并修改了我的react组件之一。但是,当我尝试对扩展了Translation的组件进行单元测试时,我遇到了问题。我遇到的第一个问题是遇到编译错误,说我的道具丢失了:i18n,tReady和t。是的,他们不在那是真的,但是我不确定该如何处理。
我尝试在测试中包含以下模拟,这可能会将所需的道具传递给我的组件:
jest.mock("react-i18next", () => ({
withTranslation: () => (Component: any) => {
Component.defaultProps = {
...Component.defaultProps,
t: () => "",
};
return Component;
},
}));
这是我的代码的样子:
interface DemoViewProps extends WithTranslation {
name: string;
}
const DemoView = (props: DemoViewProps) => {
const { t, name } = props;
return <div>{t("string id")} {name}</div>
}
This is how my test code looks like:
describe("<DemoView>", () => {
const props = {
name: "NAME",
};
const component = shallow(<DemoView {...props} />);
it("should do something", () => {
...some testing here
});
});
我希望不会出现编译错误并能够运行我的单元测试。我也希望我的代码不要变得麻烦,因为我将在使用withTranslation()的不同组件之间进行此操作