循环依赖是在Jest.js中模拟父级内部子函数的一种方法。我已经看到了有关如何使用循环导入的ES6示例,但是我在使用require将其转换为ES5语法时遇到了麻烦。这是我所拥有的:
const currentFile = require('./targetFile.js');
const a = () => {
return currentFile.b();
};
const b = () => {
return 'from b'
};
module.exports = { a, b }
然后,我尝试在需要以上作为目标文件的测试程序文件中运行以上代码:
const targetFile = require("../targetFile.js");
test('a and b', () => {
console.log(targetFile.a(), `=====targetFile.a()=====`);
});
FAIL views/admin/__tests__/targetFile.test.js
✕ a and b (12ms)
● a and b
TypeError: currentFile.b is not a function
26 |
27 | const a = () => {
> 28 | return currentFile.b();
| ^
29 | };
30 |
31 | const b = () => {
上述使用require(或其他与ES5浏览器兼容的语法)的正确语法是什么?
答案 0 :(得分:1)
出于技术原因,module.exports = {}
语法不适用于循环依赖项。幸运的是,您可以使用exports.a = a
语法,并像const target = require('target');.... target.a();
总体而言,循环进口造成的麻烦多于利弊,所以我建议避免这种情况。我也看不到您为什么需要循环导入进行测试,而您的示例也未显示。您能否发布有关文件的更多详细信息?