Node.js 如何通过mocha测试运行时参数?

Node.js 如何通过mocha测试运行时参数?,node.js,testing,command-line-arguments,mocha.js,Node.js,Testing,Command Line Arguments,Mocha.js,我正在使用mocha测试我在node.js中编写的一些代码 我的一个程序设计为使用运行时参数从命令行运行。由于有几个选项是目录,因此代码将验证这些选项并确定这些目录是否存在,包括一个可选的基本目录 这是我想用mocha测试的东西,但是代码不是为了导入而设计的,因为它是为了从命令行运行而设计的 所以我的问题是,如何通过mocha测试程序的命令行参数 我尝试过谷歌搜索,但遗憾的是,我不断收到有关mocha的文章,其中提到了mocha的命令行,而不是如何测试node.js代码的命令行。我将使用以下步骤

我正在使用mocha测试我在node.js中编写的一些代码

我的一个程序设计为使用运行时参数从命令行运行。由于有几个选项是目录,因此代码将验证这些选项并确定这些目录是否存在,包括一个可选的基本目录

这是我想用mocha测试的东西,但是代码不是为了导入而设计的,因为它是为了从命令行运行而设计的

所以我的问题是,如何通过mocha测试程序的命令行参数


我尝试过谷歌搜索,但遗憾的是,我不断收到有关mocha的文章,其中提到了mocha的命令行,而不是如何测试node.js代码的命令行。

我将使用以下步骤将您的代码更改为测试友好型:

  • 将命令行参数解析和处理放入一个函数中,该函数将字符串数组作为参数,并返回已解析的配置对象。在测试中,您可以合成命令行参数来练习代码。在生产中,您只需发送
    process.argv
  • 将目录验证内容放在单独的函数中,这些函数可以很容易地使用普通的mocha机制进行测试,使用在
    /tmp
    下创建的文件对您想要真正执行的任何文件系统I/O进行测试

这应该可以让你走得更远,但是如果你仍然想测试你的程序如何使用stdout、stderr等,那么使用
child_进程
node核心模块来运行你的程序,然后你可以在你的mocha测试中断言退出代码、写入stdio的内容,等等。

我不确定我是否能做到第一点,因为我正在使用opt lib。我的问题是,我没有在代码中导出任何“函数”,因为代码不是作为模型设计的,而是作为执行程序设计的。但是如果我想在摩卡咖啡中使用它,我想我无法回避这个问题。你可以通过一个代码片段得到更好的答案。一般的答案很难。在opt库中发布代码是没有意义的,我对它不太满意,并且正在考虑改用其他代码。我认为我主要关心的是如何将js文件用作“可执行文件”,因此如果另一段代码“需要”了.js,则不会将其中的任何组件公开为可用。如果我想在摩卡咖啡中使用它,我想我没有办法解决这个问题。