我正在测试一个使用i18next进行国际化的React组件。
组件:
import * as React from "react";
import { t } from "i18next";
export function Hello(_props) {
return <div className="widget-header">
{t("Hello, world!")}
</div>;
}
测试:
import * as React from "react";
import { render } from "enzyme";
import { Hello } from "./hello";
describe("<Hello />", () => {
it("says hi", () => {
let hi = render(<Hello />);
// FAILS!
// Expected "" to contain "Hello"
expect(hi.text()).toContain("Hello");
});
})
我怀疑Jest正在追查i18next.t()
以返回undefined
而不是&#34; Hello,world!&#34;,但我不确定。
我试图unmock("i18next")
没有运气。
如何在Jest中为i18next组件编写测试?
更新:我使用的是Typescript作为我的编译器。似乎有一个hoisting issue加载器我用于Typescript(ES6升降机导入,jest.unmock
不是 - Babel用户有一个插件来处理这个)。
答案 0 :(得分:3)
不确定为什么它不起作用,但你可以像这样模拟i18next
:
jest.mock('i18next', () => ({
t: (i) => i
}))