0

我正在尝试只执行我的节点茉莉花测试的一个子集。

我有一个项目结构如下

root
  + server
    + invite
      +specs
        inviteSendSpec.js
        inviteConfirmSpec.js
        .. many more spec files
    + auth 
      +specs
       .. many spec files

我可以通过运行从 root 执行所有测试:

node-jasmine --verbose server/

我试图弄清楚如何使用 -m 参数,以便我可以运行匹配某个文件名模式的测试。

例如

node-jasmine --verbose -m invite server/

根据我发现的几个例子,应该运行所有包含邀请的测试。但相反,它只找到一个测试。

如果我尝试运行类似的变体,例如

node-jasmine --verbose -m send server/

它不会找到任何测试。

选择测试子集的正确语法是什么?

ps 我正在运行 jasmine-node 11.1.0 (所以它不是 walkdir 问题)

4

2 回答 2

2

-m 或 --match 参数确实用于文件名匹配。

我在键盘上敲了几个小时,最后查看了 cli.js 的源代码。

所以这是票(cli.js,第 228 行):

var regExpSpec = new RegExp(match + (matchall ? "" : "spec\\.") + "(" + extensions + ")$", 'i')

啊哈!

首先,您必须指定 --matchall 键,否则它将使用默认的“spec”前缀。

其次,你无法指定扩展名,如果你使用 --coffee 命令行参数,它们要么是 js 要么是 js|coffee|litcoffee

我的测试文件有 unit.js 后缀(不要问为什么),所以我最终得到了

cli.js --verbose --matchall --match unit\. --test-dir C:\MyProject\

它完成了这项工作。

于 2014-12-23T18:37:12.963 回答
0

你的文件名是正确的

来自文档github.com/mhevery/jasmine-node

注意:您的规范文件必须命名为 *spec.js、*spec.coffee 或 *spec.litcoffee,与正则表达式 /spec.(js|coffee|litcoffee)$/i 匹配;否则 jasmine-node 将找不到它们!例如,sampleSpecs.js 是错误的,sampleSpec.js 是正确的。

你只需要运行hole文件夹:

节点茉莉花--详细服务器/邀请/规格/

node-jasmine --verbose server/auth/specs/

于 2014-07-29T16:17:49.127 回答