0
我正在使用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
內。因此,當我嘗試運行此測試時,出現錯誤,說明無法找到模塊./foo
,因爲正在按照預期在「根」目錄中查找myProxyquire.js
文件,而不是src
目錄。
如果你用普通的require代替了'proxyquire',你會遇到同樣的問題,因爲'require'是這樣工作的:它加載相對於文件的文件_that包含對'require'的調用。 _,在你的情況下是'myProxyquire.js' – robertklep
這就是我想的,有沒有辦法解決這個問題? –