2016-10-28 5 views
2

最近私のプロジェクトの1つをwebpack & babelに変換しました。それはノックアウトのコンポーネントから作られています。webpackはjest unit-testsでnon-jsコンテンツを要求します

単体テストの実行中に問題が発生しています。私は

import component from '../custom-options'; 

test('adds 1 + 2 to equal 3',() => { 
    expect(3).toBe(3); 
}); 

ようテストフォルダ内のファイルがある場合、問題は、コンポーネントは、私は、ウェブサイト自体を実行しようとすると、ソート

var htmlString = require('./custom-options.html'); 

の必要があるモジュールであるということです生のローダーがこのような要求に対応するように設定されているので、正常に動作します。しかし、私がテストを実行すると、テスト結果が出力されます:

custom-options.html:1 
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){?<div id="custom-options-containe" class="mod--custom-options"> 
                         ^
SyntaxError: Unexpected token < 

    at transformAndBuildScript (node_modules\jest-cli\node_modules\jest-runtime\build\transform.js:284:10) 
    at custom-options.js:13:38 
    at Object.<anonymous> (custom-options.js:93:3) 

これはどうして起こっているのでしょうか?私は冗談が間違っていると思ったが、私はAvaでそれを下ろそうとしたが、結果は同じだった。私はそれがバベルの問題だと思っています。

私はbabel-jestプリプロセッサでjestを実行しています。あなたはこのようなpackage.jsonで設定を冗談で

答えて

6

あなたはすべてなしJSファイルのグローバルモックを作成することができます。

"jest": { 
    "moduleNameMapper": { 
    "^.+\\.html$": "<rootDir>/__mocks__/htmlMock.js" 
    } 
} 

その後、以下の内容で、プロジェクトのルートに__mocks__フォルダ内のファイルhtmlMock.jsを作成します。あなたはワ場合は詳細情報については

module.exports = 'test-file-stub'; 

は、ルックhere

を持っていますパスがないかをテストしたいファイルへのテストファイルに相対的であることを

jest.mock('path/from/test/to/custom-options.html',()=> 'test-file-stub'); 

お知らせ:NTはあなたにも、このようなあなたのテストでファイルを模擬することができ、すべてのテストケースのための特別なモックを持っています。

関連する問題