我有一个具有内部函数的函数,对于我的单元测试,我只想测试内部函数的功能,但是当我导出该函数并调用内部函数时, npm 测试返回错误。
在我的main.js
中:
mainFunction = () => {
functionToBeTested = () => {
// some code
}
}
module.exports = {mainFunction: mainFunction}
在我的test.js
const chai = require("chai");
const assert = require("chai").assert;
const mainFunction = require("./main");
describe ("test", () => {
it("returns results", () => {
let result = mainfunction.functionToBeTested(args);
//equal code
});
})
但是当我运行 npm 测试时,它说:
mainfunction.functionToBeTested不是函数。
我在做什么错了?
答案 0 :(得分:3)
如果要链接功能,可以尝试类似的操作。
main.js
const mainFunction = () => {
const functionToBeTested = () => {
return "I got it";
}
return { functionToBeTested };
}
module.exports = { mainFunction };
test.js
const chai = require("chai");
const assert = require("chai").assert;
const mainFunction = require("./main");
const mf = mainFunction();
describe ("test", () => {
it("returns results", () => {
let result = mf.functionToBeTested(args);
//equal code
});
});
答案 1 :(得分:2)
实际上,您不能以这种方式在另一个函数内部调用函数声明。一种解决方案是在functionToBeTested
外部声明mainFunction
,然后将其命名为:
main.js
const functionToBeTested = () => {
// some code
};
const mainFunction = () => {
functionToBeTested();
};
module.exports = { mainFunction, functionToBeTested }
test.js
const chai = require("chai");
const assert = require("chai").assert;
const { mainFunction, functionToBeTested } = require("./main");
describe ("test", () => {
it("tests mainFunction", () => {
let main = mainfunction(args);
...
});
it("tests functionToBeTested"), () => {
let tested = functionToBeTested(args);
...
});
})
答案 2 :(得分:1)
这是因为仅导出mainFunction()而不导出functionToBeTested(),因此在此模块之外,JS不知道functionToBeTested()的存在。
我建议您将functionToBeTested分开移动并导出该函数,或者使用帮助程序来调用它。