私はimportでmocksパッケージであるproxyquireライブラリを使用しています。予期したとおりに動作しないようにする必要があります
私は定期的に使用し、定期的に(特別輸入構文を持つ流星パッケージを、)スタブしたいパッケージのさまざまなスタブ自分proxyquire機能を、作成しています:
今// myProxyquire.js
import proxyquire from 'proxyquire';
const importsToStub = {
'meteor/meteor': { Meteor: { defer:() => {} } },
};
const myProxyquire = filePath => proxyquire(filePath, importsToStub);
export default myProxyquire;
私がしたいですこれらのパッケージのいずれかを使用して、ファイルのテスト書き込み:
// src/foo.js
import { Meteor } from 'meteor/meteor'; // This import should be stubbed
export const foo =() => {
Meteor.defer(() => console.log('hi')); // This call should be stubbed
return 'bar';
};
をそして最後に、私はこのようにそれをテストします。
// src/foo.test.js
import myProxyquire from '../myProxyquire';
// This should be looking in the `src` folder
const { foo } = myProxyquire('./foo'); // error: ENOENT: no such file
describe('foo',() => {
it("should return 'bar'",() => {
expect(foo()).to.equal('bar');
});
});
最後の2つのファイルは、サブフォルダsrc
の中にネストされています。だから私がこのテストを実行しようとすると、ファイルが "root"ディレクトリで検索されているので、モジュール./foo
が見つかりませんでしたというエラーが表示され、src
ディレクトリが予想通りに見つかりませんでした。
あなたが 'proxyquire'への呼び出しを通常の' require'に置き換えた場合、 'require'の仕方で同じ問題が発生します:' require'への呼び出しを含むファイルに対してファイルを読み込みます_、あなたの場合は 'myProxyquire.js' – robertklep
これも私が思ったことです、これを回避する方法はありますか? –