Typescript,Jest和i18next:无法在React组件中看到文本

时间:2017-04-20 15:20:42

标签: reactjs typescript jestjs enzyme i18next

我正在测试一个使用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用户有一个插件来处理这个)。

1 个答案:

答案 0 :(得分:3)

不确定为什么它不起作用,但你可以像这样模拟i18next

jest.mock('i18next', () => ({
  t: (i) => i
}))