我有一个具有以下格式的节点项目:
structures/extendedClient.js
utils/feature.js
tests/feature.test.js
在extendedClient.js中我有以下内容:
class extendedClient extends Client {
constructor(props) {
// constructor stuff
}
runFeature() {
require("../util/feature")(this);
}
}
module.exports = extendedClient;
在我的 feature.js 中,我有以下内容:
module.exports = (client) => {
/**
*
* @param {require("../structures/extendedClient")} client
*/
function featureCore() {
// stuff (requires client variable)
}
featureCore();
}
我尝试从另一个位置调用 featureCore() 但它无法正确导入,所以我暂时将其放在这里。但是,现在我无法在任何单元测试中引用该函数(开玩笑)。
我的 feature.test.js 文件:
const { anotherFunction, featureCore } = require("./util/feature");
test('expect birthday core to be read', () => {
expect(birthdayReminderCore().toBe(3))
})
我的测试套件抛出“TypeError:featureCore 不是函数”。
我确信我错过了一些明显的东西,只是希望有人能指出我正确的方向。谢谢!
featureCore
是在紧随其后执行的函数内定义的。因此,featureCore
无法在该范围之外访问,因此无法导入到测试文件中
尝试这个重组:
function featureCore(client) {
// stuff (requires client variable)
}
// Export both the featureCore function and the main module function
module.exports = {
featureCore,
mainFunction: (client) => {
featureCore(client);
}
};
class extendedClient extends Client {
constructor(props) {
// constructor
}
runFeature() {
require("../utils/feature").mainFunction(this);
}
}
module.exports = extendedClient;
//feature.test.js
const { featureCore } = require("../utils/feature");
test('featureCore return correct value', () => {
const mockClient = {}; // mock client/birthdaycore
expect(featureCore(mockClient)).toBe(3);
});
featureCore
是在顶层定义的并且可以导入。在测试文件中,确保从 feature.js 文件正确导入 featureCore。