2017-05-03 21 views
0

を持って、私はテストを実行したときに、私はこのエラーを抱えているので、私はJestReact-Intl libraryをからかっ苦労されています:マニュアルモックリアクト-国際空港を冗談でスナップショット・テスト

Invariant Violation: [React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry. 

このライブラリのdocumentationは、我々が持っていると言います__Mocks__と呼ばれるルートプロジェクトにフォルダを作成し、このファイルを追加します。

// ./__mocks__/react-intl.js 
import React from 'react'; 
const Intl = require.requireActual('react-intl'); 

// Here goes intl context injected into component, feel free to extend 
const intl = { 
    formatMessage: ({defaultMessage}) => defaultMessage 
}; 

Intl.injectIntl = (Node) => (props) => <Node {...props} intl={intl}/>; 

module.exports = Intl; 

しかし、何も起こりませんが。

答えて

4

時間を見て、私が変更する必要があったのは、私がreact-intlパッケージを必要としていた方法であることがわかった。それに

const Intl = require.requireActual('react-intl'); 

::だから、私はその行を変更し

import React from 'react'; 
const Intl = require.genMockFromModule('react-intl'); // <-- This is the change 

const intl = { 
    formatMessage: ({defaultMessage}) => defaultMessage 
}; 

Intl.injectIntl = (Node) => (props) => <Node {...props} intl={intl}/>; 

module.exports = Intl; 

・ホープ、このことができます:

const Intl = jest.genMockFromModule('react-intl'); 

だから、最終的なファイルは次のようになります!

関連する問題