所以,我是 js 测试的新手,我正在尝试使用 mocha 来测试 Node 应用程序。
理想情况下,我希望拥有它,以便测试位于单独的文件中并在 Node 脚本本身上运行(可能通过在测试脚本顶部使用 require 调用)。目前我正在做一些我知道不正确的事情,即将测试包含在脚本文件底部的一个 block 中。这是生产代码中包含的测试代码的问题,以及当您尝试启动 Node 服务器时返回“描述未定义”的事实。
我已经阅读了很多关于 mocha 等的教程,您似乎可以通过执行“module.export.”来单独导出所有方法,但这似乎很昂贵而且也很突兀。
我在这里错过了什么?当然,您不必构建两个脚本(一个有测试代码,一个没有测试代码?)——那样会导致版本问题。
如何最好地做到这一点(文章链接也很感激地被接受。:)
谢谢
詹姆斯
最佳答案
下面是我看到人们在做的事情,以及我在自己的工作中采用的方法:
- 在您的模块中,只导出需要导出的值。就我个人而言,我尽量限制自己只导出一个函数,但那是一个单独的讨论。
- 创建一个
test
目录并将所有测试用例放入其中。使用您喜欢的任何命名约定。我更喜欢为每个源模块准备一个测试文件。在每个文件的开头,简单地要求被测模块。 - 使用
--recursive
参数从 Makefile/Cakefile 调用 mocha,以便它知道检查test
目录的全部内容。
这意味着您正在通过它们的接口(interface)测试模块,就像您在普通代码中使用它们一样。缺点是,如果您的非导出函数的执行路径很难通过模块的接口(interface)访问,您可能会发现自己有点沮丧。
一方面,我同意模块应该在使用时进行测试的观点。另一方面,我认为如果知道我直接测试了上述每一个棘手的执行路径,我晚上会睡得更好。在进行 node.js 编程之前,我花了几年时间编写 erlang 代码,它具有完全相反的约定:(测试放在源文件的末尾,因此它们可以直接访问模块中的每个函数,并测试包含/导出由 ifdef 指令处理)。就个人而言,我更喜欢 erlang 方法。
无论如何,我希望这对您有所帮助。如果任何读到这篇文章的人有强烈的相反意见,我很乐意听到。
关于node.js - 不显眼的 Node 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13078848/