对内部函数进行单元测试?

Ken*_*ang 5 javascript testing helper mocha.js chai

我有一个具有内部函数的函数,对于我的单元测试,我只想测试内部函数的功能,但是当我导出该函数并调用内部函数时,npm测试返回错误。

在我的main.js

mainFunction = () => {
  functionToBeTested = () => {
    // some code
  }
}

module.exports = {mainFunction: mainFunction}
Run Code Online (Sandbox Code Playgroud)

在我的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
  });
})
Run Code Online (Sandbox Code Playgroud)

但是当我运行npm test 时,它说:

mainfunction.functionToBeTested 不是函数。

我究竟做错了什么?

Nen*_*roz 2

实际上,您不能以这种方式在另一个函数内调用函数声明。解决方案是在functionToBeTested外部声明mainFunction,然后调用它:

main.js

const functionToBeTested = () => {
  // some code
};

const mainFunction = () => {
  functionToBeTested();
};

module.exports = { mainFunction, functionToBeTested }
Run Code Online (Sandbox Code Playgroud)

测试.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);
    ...
  });
})
Run Code Online (Sandbox Code Playgroud)