首页 > 解决方案 > 如何测试不带参数的命令行应用程序?

问题描述

我有一个带有 4 个参数的命令行应用程序,我现在正在为它们编写单元测试。我只是对如何准确编写这些测试有一些疑问,因为我的函数不接受任何参数?

所以在控制台中,要运行应用程序,它将是 test.js arg1 arg2 arg3 arg4 输出。

我可以将整个函数包装在一个更大的函数中并分配参数,然后以这种方式进行测试,但是有更好的方法吗?就像来自用户的虚假输入?

function test(){
  arg1 = process.argv[2];
  arg2 = process.argv[3];
  arg3 = process.argv[4];
  arg4 = process.argv[5];

  console.log(arg1 + arg2 + arg3 + arg4);
}

所以我想测试是否有任何输入为空?该错误应产生“需要所有 4 个条目”。这就是它的要点,我该如何为此编写单元测试?

标签: javascriptunit-testingcommand-linemocha.jschai

解决方案


我不熟悉 JavaScript,因此以下建议可能无法完全按照描述的方式工作。我希望你能在这种情况下轻松地将这个想法“移植”到在 JavaScript 中工作的类似东西......

您可能会做以下事情:拥有一些函数validateCommandLineArgs并将其process.argv作为参数传递:

function validateCommandLineArgs(argsArray){
    ... check if argsArray has four elements etc.
}

然后,您可以从您的单元测试中调用validateCommandLineArgs任意创建的数组,以查找函数在不同场景中验证参数的方式是否存在错误。


推荐阅读