2017-04-23 14 views
1

Reactコンポーネントをテストしようとしていますが、コンポーネントのストアはいくつかのgRPC通信を行っているため、grpc node_moduleが必要です。私のテストでは、grpcをインポートするストアをインポートするReactコンポーネントをインポートするため、チェーンを介してgrpcをインポートしています。Jestマニュアルのモックが動作しない

これは素晴らしいですが、automockが失敗している:

const grpc = {}; 
export default grpc; 
Error: The specified module could not be found. \\?\C:\Dev\Projects\Electron\PAT\client\app\node_modules\grpc\src\node\extension_binary\grpc_node.node

をだから私はは冗談Documentationあたりnode_modulesに隣接フォルダをあざけり、それの内側に私はgrpc.jsを作成して配置します

これはもう少し私を得ます: TypeError: grpc.makeGenericClientConstructor is not a function

私はgrpc.jを変更しようとしています。 sがなければ:

const grpc = { makeGenericClientConstructor:() => { return; } }; 

しかし、私は同じエラーを取得していきません: TypeError: grpc.makeGenericClientConstructor is not a function

私はjest.setMockとjest.mockを使用して試してみたが、どちらも役立つように見えます。

アイデア/提案/回避策はありますか?

+0

はES6モジュールとして評価していますか? commonjsを使用した場合、 'export default grpc;を使用する代わりにどうなりますか? 'module.exports = grpc;'? –

+0

これはあなたに感謝しました固定!あなたはその質問に答えたいですか? – austinrulezd00d

答えて

1

は残念ながら、export default grpsを使用することによって、あなたのモジュールは、実際のESモジュールエクスポート:

{ 
    default: { 
     makeGenericClientConstructor: ... 
    } 
} 

あなたはあなたがgrpc.default.makeGenericClientConstructorにアクセスする場合はそれが本当であることを確認することができますが、それはあります。

あなたの環境でESモジュールを使用すると、ESモジュールモックをCommonJS(バベル経由)にコンパイルするようにJestに指示しても問題ありませんが、そうしないとモックをCommonJSモジュールを使用して:

module.exports = grpc; 
関連する問題