2017-11-02 8 views
0

私がテストしたいコンポーネントの内部で使用されている(しかし、バベルプラグインとして提供されているため、インポートされていない)myHelperという機能を提供するbabelプラグインを使用しています。ジャストテストでバベルプラグインを模擬する方法は?

myHelperをJestと「グローバルに」モックするにはどうすればよいですか?

+1

あなたは、このためのサンプルGitのリポジトリを提供することができますか? –

+0

あなたのコードに 'MyHelper'をどのように使用するかに関するコードサンプルを常に提供してください – Bwaxxlo

答えて

0

myHelperをグローバルにすると悪い方法かもしれません。

// myHelper.js 
function myHelper(){ 
    return work() // expected 1 
} 
if (global) { 
    global.myHelperFunction = myHelper; 
} 

// myHelper.test.js 
test('TEST MY HELPER',() => { 
    expect(global.myHelperFunction()).toBe(1); 
}) 
0

私はヨーヨーが行くことができる二つの方向を参照してください。 - グローバルヘルパーを利用できるようにし、あなたのコードはそれで をどのように相互作用するかをテストする - babel-jestを通じてヘルパーを利用できるようにし、あなたのテストを書くに応じ

まず、ジスト設定でsetupFilesフィールドを使用して達成することができます。テストを実行する前に実行するスクリプトの配列を指定できます。あなたはそれらのいずれかであなたのヘルパーを世界的に作ることができます。

2番目の設定は、ジスト設定でtransformを指定することで実現できます。何かのように

"transform": { 
    "^.+\\.(js|jsx)$": "<rootDir>/node_modules/babel-jest" 
} 

ご要望が具体的であれば、お気軽にコメントしてください。

1

私はこれらのコンポーネントに、myHelperプロパティを受け入れて、任意に、バーベルによって提供されるmyHelperメソッドを模倣するようにします。デフォルトでは、プロパティは元myHelper方法を指します:

class MyComponent extends Component { 
    constructor() { 
     // Use myHelper function like: 
     this.props.myHelper(); 
    } 

    return (
    <div>...</div> 
); 
} 

MyComponent.propTypes = { 
    myHelper: PropTypes.func.isRequired, 
}; 

MyComponent.defaultProps = { 
    // set by default to babel-provided method 
    myHelper: myHelper, 
}; 

..and、例えば、enzymeを使用して、テストでその:

const myHelperMock = jest.fn(); 
const wrapper = shallow(
    <MyComponent 
     myHelper={myHelperMock} 
    /> 
);