单行测试一行代码

时间:2017-05-11 16:50:40

标签: javascript node.js mocha sinon

我是编写单元测试的新手,我正在为我的机器人代码编写单元测试。 我有这个部分困扰我:

const accessToken = (() => {
  if (process.argv.length !== 3) {
    console.log('usage: node main/implementation');
    process.exit(1);
  }
  return process.argv[2];
})();

伊斯坦布尔告诉我这条线return process.argv[2];没有被覆盖,但我不知道为该线编写单元测试。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果伊斯坦布尔说未涵盖此行,则表示所有测试用例都匹配

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)
})