2016-09-14 23 views
5

私はwebpack-provide-pluginを使用して反応をインポートしています。webpack提供Jest with plugin

new webpack.ProvidePlugin({ 
     "React": "react", 
}), 

// text.jsx

let text = (props) => (
    <div> 
    <p class="text">this.props.text</p> 
    </div> 
) 

export default text 

//text.test.js

import React from 'react'; 
import { shallow } from 'enzyme'; 
import text from 'text'; 

it('Renders text',() => { 
    const wrapper = shallow(<text/>); 
    expect(wrapper.hasClass("text")).toEqual(true); 
}); 

しかし、ランニングは冗談でコンポーネントのテストを反応させながら、私はエラー

ReferenceError: React is not defined 
を取得

もちろん、反応がインポートされていないため明白に。明示的なインポートと提供プラグインを放棄する以外の方法はありますか?あなたが提供するWebPACKを使用してこの変数を証明しているよう http://facebook.github.io/jest/docs/configuration.html#setupfiles-array

+0

方法が見つかりませんでした。しかし、私は、Webpack providePlugin設定を削除する方が良いと考えていました。インポートはビルド/バンドルの設定を行うことを推奨します。 –

+0

ここでも同じ問題ですが、私はそれが重要だと思います – VanDavv

+0

モックは助けてくれますか?私はprovidePluginを削除しましたので、この問題を解消しました。 –

答えて

8

あなたはこのように冗談のためのセットアップファイルを作成することができますプラグイン。

インポート "react"から反応します。

+0

これは 'DefinePlugin'でも同様です。 – HussienK

0

この行を削除し、 "setupFiles": [ "<rootDir>/jest.setup.js" ]

//jest.setup.js 
window.React = require('react'); 

をし、それが設定を冗談に追加:

関連する問題