如何使用打字稿

时间:2019-03-31 16:15:07

标签: reactjs i18next

我基本上有一个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()的不同组件之间进行此操作

0 个答案:

没有答案