私がテストしたいコンポーネントの内部で使用されている(しかし、バベルプラグインとして提供されているため、インポートされていない)myHelper
という機能を提供するbabelプラグインを使用しています。ジャストテストでバベルプラグインを模擬する方法は?
myHelper
をJestと「グローバルに」モックするにはどうすればよいですか?
私がテストしたいコンポーネントの内部で使用されている(しかし、バベルプラグインとして提供されているため、インポートされていない)myHelper
という機能を提供するbabelプラグインを使用しています。ジャストテストでバベルプラグインを模擬する方法は?
myHelper
をJestと「グローバルに」モックするにはどうすればよいですか?
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);
})
私はヨーヨーが行くことができる二つの方向を参照してください。 - グローバルヘルパーを利用できるようにし、あなたのコードはそれで をどのように相互作用するかをテストする - babel-jest
を通じてヘルパーを利用できるようにし、あなたのテストを書くに応じ
まず、ジスト設定でsetupFiles
フィールドを使用して達成することができます。テストを実行する前に実行するスクリプトの配列を指定できます。あなたはそれらのいずれかであなたのヘルパーを世界的に作ることができます。
2番目の設定は、ジスト設定でtransform
を指定することで実現できます。何かのように
"transform": {
"^.+\\.(js|jsx)$": "<rootDir>/node_modules/babel-jest"
}
ご要望が具体的であれば、お気軽にコメントしてください。
私はこれらのコンポーネントに、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}
/>
);
あなたは、このためのサンプルGitのリポジトリを提供することができますか? –
あなたのコードに 'MyHelper'をどのように使用するかに関するコードサンプルを常に提供してください – Bwaxxlo