2017-04-20 6 views
0

i18nextを国際化に使用するReactコンポーネントをテストしています。Typescript、Jest、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"); 
    }); 
}) 

私の疑いが冗談ではなくundefinedを返すようにi18next.t()をスタブされていることですが、私はそれがわからないよ "こんにちは、世界!" 。

私はunmock("i18next")に運が無かった。

Jestのi18nextコンポーネントのテストを書くにはどうすればよいですか?

更新:私はコンパイラとしてTypescriptを使用していました。 Typescriptにはローダーを使用してhoisting issueがあるようです(ES6ホイストのインポート、jest.unmockはありません - バベルユーザーはこれを処理するプラグインを持っています)。

+0

あなたが 'にconsole.log(T(「こんにちは、世界!」))'あなたのファイルを追加することができます問題が実際に 'i18next'に関連しているかどうかを確認してください。 –

答えて

3

ないのが機能していないが、あなたはちょうどこのようi18nextを置く模擬できる理由を確認してください。ただ、

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

ありがとうございます。私の問題はTypescriptコンパイラで起こったようです。私は説明を更新しました。 – Rick

関連する問題