2017-05-04 15 views
0

私のアプリケーションにJest/Flow設定が機能していました。私たちはTypeScriptに切り替え、すべてのテストが壊れました。私はすべてを.tsと.test.tsに変換し、すべてのバグを修正しました。なんらかの理由で、私の__mocks__はもう使用されません。 (オートロックに失敗したモジュールを模擬しなければならなかった)jest typescriptはnode_modulesに__mocks__を使用していません

たとえば、以下のコードは、 。私はTypeScriptに変換したので、require ("electron")がテストでヒットしたときはいつでも、remoteは定義されていません。

EX)aFile.test.ts

import reportError from "../aFile.ts"; 
const { dialog } = require ("electron").remote; 

describe ("reportError",() => 
{ 
    test ("creates dialog",() => 
    { 
     const title = "foo"; 
     const message = "bar"; 
     reportError (title, message); 

     expect (dialog.showErrorBox).toHaveBeenLastCalledWith (title, message); 
    }); 
}); 

EX)aFile.ts

const { dialog } = require ("electron").remote; 
export default function reportError (title: string, message: string) 
{ 
    dialog.showErrorBox (title, message); 
} 

EX)__mocks__/electron.js node_modulesの(兄弟)

module.exports = { remote: { dialog: { showErrorBox: jest.fn() } } };

私は確かにモックではありません知っています使用されて、becau

jest.mock ("electron",() => { return { remote: { dialog: { showErrorBox: jest.fn() } } } });

なぜ__mocks__を見つける活字されていない:私はどんな失敗.test.tsファイルに以下を追加する場合、SEは、それが合格を開始しますか?

+0

私の推測では、 'require( 'electron')'は冗談パーサから隠されていて、冗談がインポートを持ち上げたときには検出されません。これはおそらく冗談のソースに深い潜入を必要とするでしょう。 –

+0

同じ問題がある:( – Jonathan

+0

私はこれを修正することができました明日の対応策を投稿します – austinrulezd00d

答えて

1

私はこの問題を解決するには、以下の回避策を使用:

mocks.jsを作成:package.jsonで

jest.mock ("electron",() => 
    { 
    return { remote: { dialog: { showErrorBox: jest.fn() } } }; 
    }); 

冗談セクション(あなたmocks.jsがある場所へのパス)にこれを追加します。

これは、グローバルに電子と他のモジュールを宣言します。ここには__mocks__というようなものがあります。おそらく各モジュールを独自のファイルに入れてsetupFiles配列に追加することができます。

関連する問題