Javascript 一行代码的单元测试

Javascript 一行代码的单元测试,javascript,node.js,mocha.js,sinon,Javascript,Node.js,Mocha.js,Sinon,我刚开始编写单元测试,我正在为我的bot代码编写单元测试。 我有一部分困扰着我: const accessToken = (() => { if (process.argv.length !== 3) { console.log('usage: node main/implementation'); process.exit(1); } return process.argv[2]; })(); 伊斯坦布尔向我展示了这条线的返回过程;未涵盖,但我不知道如何为该

我刚开始编写单元测试,我正在为我的bot代码编写单元测试。 我有一部分困扰着我:

const accessToken = (() => {
  if (process.argv.length !== 3) {
    console.log('usage: node main/implementation');
    process.exit(1);
  }
  return process.argv[2];
})();
伊斯坦布尔向我展示了这条线的返回过程;未涵盖,但我不知道如何为该行编写单元测试。
有什么想法吗?

如果伊斯坦布尔说这一行没有包括在内,这意味着您的所有测试用例都是匹配的

process.argv.length !== 3
所以你的测试没有一个是针对这条线的

return process.argv[2];
在修复之前,您应该问问自己,是否需要为此行添加一个测试100%覆盖率并不总是必要的

如果要修复它,可能可以尝试设置process.argv的值。这只是一个想法,我不确定您是否可以像这样设置process.argv的值。这是一个伪代码

const fakeArgv = [1, 2, 3];
process.argv = fakeArgv;

it('should return third argv', () => {
  expect(accessToken).to.equal(3)
})

您需要向IIFE传递3个参数,比如const accessToken==>{..code}'a'、'b'、'c';如果删除return process.argv[2];,我的应用程序不再工作了^^^所以我认为所有的测试人员都会去那一行,没有一个会去这一行:process.argv.length!==3您运行什么命令启动应用程序?您运行什么命令来启动测试?如果命令不同,您可以在应用程序中有参数,但在测试中没有参数。json:start:node build/implementation.js AEDARC6WSMQNHLEA6I2TNFOT7GEJ2VOH test:mocha test/test.spec.js,这就是我说的,您的测试没有参数,所以您的测试不会进入最后一行