2017-11-21 5 views
0

Jestでは、私は次のテストコードを持っています。私はNativeModulesをインポートします。モックされたオブジェクトに直接アクセスすることはできません

import { NativeModules } from 'react-native'; 

その後、各テストの前に、私はそれに私自身のオブジェクトに追加します。私はNativeModulesをインポートし、私がテストしていたソースコードで

beforeEach(() => { 
    NativeModules.Dispatcher = { 
     methodA: jest.fn(), 
     methodB: jest.fn(), 
     methodC: jest.fn() 
    }; 
}); 

import { NativeModules } from 'react-native'; 

私の模擬オブジェクトを参照してください。

class ClassThatIsTested { 

    someMethod(parameter) { 
     NativeModules.Dispatcher.methodA(parameter); 
     //some other code 
    } 

} 

これは問題なく動作します。しかし、私は直接嘲笑オブジェクトを参照しようとした場合:

import { NativeModules } from 'react-native'; 
const { Dispatcher } = NativeModules; 
class ClassThatIsTested { 

    someMethod(parameter) { 
    Dispatcher.methodA(parameter); 
     //some other code 
    } 

} 

それは失敗します。

Dispatcher.methodA is not a function 

私はDispatcher印刷する場合、私はundefinedを取得します。

どうしてですか?なぜ擬似オブジェクトに直接アクセスできないのですか?

答えて

0
import NativeModules from 'react-native'; 

が間違っている、あなたではなく、デフォルトの輸出よりも、import the named export NativeModulesする必要があります:私は本当にごめんなさい

import {NativeModules} from 'react-native'; 
+0

は、私が誤って自分のコードをコピーしました。実際には、 'react-native 'から' import {NativeModules}'を使用します。 – octavian

関連する問題