2017-04-14 10 views
1
私は画面を持っている中で反応し、ネイティブアプリケーションを書いている

とコンポーネント用モックreact-native-tableviewはiOS固有のコードをいくつか呼び出すので、単ににアンドロイドバージョン(CustomTable.android.js)を返すだけで気にしました。私が何をしたいか3210フォルダ使用して、カスタムは、私がテストに必要な冗談

__mocks__/CustomTable.ios.js

import CustomAndroidTable from "../CustomTable.android"; 
export const CustomTable = CustomAndroidTable; 

は冗談でテストMyScreen.jsですが、私はそれが__mock__/CustomTable.iosを使用したいです。それをどうやって行うのですか?それはJestでも可能ですか?私の現在のテストファイルは次のようになります。

tests/MyScreen.test.js

import React from "react"; 
import renderer from "react-test-renderer"; 
import MyScreen from "../src/MyScreen"; 

describe("test",() => { 
    it("works",() => { 
    jest.mock("../src/CustomTable.ios"); 
    const tree = renderer.create(
    <MyScreen />, 
).toJSON(); 
    expect(tree).toMatchSnapshot(); 
}); 

しかし、それはまだCustomTable.iosの元のバージョンを呼び出します。何が間違っているのですか?

答えて

1

あなたのスイートのテストの外jest.mock呼び出す必要があります。それはあなたの輸入の直後でなければなりません。

import React from "react"; 
import renderer from "react-test-renderer"; 
import MyScreen from "../src/MyScreen"; 

jest.mock("../src/CustomTable.ios"); 

describe("test",() => { 
    it("works",() => { 
    const tree = renderer.create(
    <MyScreen />, 
).toJSON(); 
    expect(tree).toMatchSnapshot(); 
}); 
関連する問題