2017-10-05 9 views
0

SVGファイルの一部にsvg-react-loaderを使用しています我々のアプリケーションでは。エラーでwebpackですべてをバンドルせずにJestでテストすると " - !svg-react-loader!/ path/to/my.svg"を無視する方法

/* global it, document */ 
import React from 'react' 
import ReactDOM from 'react-dom' 
import Comp from './Icon' 

it('renders without crashing',() => { 
    const div = document.createElement('div') 
    ReactDOM.render(<Comp><div /></Comp>, div) 
}) 

{ 
    "presets": [ 
    "es2015", 
    "react" 
    ], 
    "plugins": [ 
    "transform-decorators-legacy", 
    "transform-class-properties", 
    "transform-object-rest-spread" 
    ] 
} 

次のテストが失敗した:私たちは、バベル、冗談と、次の.babelrcで実行するように設定冗談にしようとしている Cannot find module '-!svg-react-loader!../../assets/grid.svg' from 'Icon.js'

' - !svg-react-loader!../../ assets/grid.svg'からのインポートグリッドで始まるインポートを無視するにはどうすればいいですか? jest?

答えて

1

私がこれを解決したのは、- !svg-react-loader!を含むインポート用のjest mockを追加することでした。をモジュールの先頭に置きます。

'use strict'; 
module.exports = 'div'; 

ファイルが単純ではないが存在する可能性があるため、それは、理想的ではないですが、仮定はWebPACKので束ねるときに我々が欠けているモジュールを参照してくださいということです。svgImportMock.jsがある

"moduleNameMapper": { 
    "^-!svg-react-loader.*$": "<rootDir>/config/jest/svgImportMock.js" 
} 

+0

もっと適切な解決策になりましたか?これは今でも私のためにやってくれるでしょう。しかし私はより理想的な解決策を望んでいます –

+0

この時点ではありません。私は今、ハックに固執しています。私はSVG内の何かをテストしているわけではないので、それは私にとってまともな解決策です。 –

関連する問題