如何在多个测试目录中运行jasmine规范

时间:2017-09-07 14:03:55

标签: node.js jasmine automated-tests

Jasmine设置为在单个目录下运行其规范。它没有设置为从多个spec目录中查找和运行测试。这是我的项目结构:

 project root: /
     package.json
     spec
        --> jasmine_examples
     module_a
        --> spec
     module_b
        --> spec
     module_c
       --> spec

如果我想从每个模块运行测试,我必须指定每个spec文件。

    "spec_files": [
      "module_a/spec/spec.js",
      "module_b/spec/spec.js",
      "module_c/spec/spec.js"
    ],

这允许我运行jasmine cli,但它不可扩展。肯定有更好的办法。我不想手动指定包含规范的每个模块。我希望以递归方式搜索所有目录的规格。

我只使用JSDom在Node上运行这些,没有Karma或任何无头浏览器。

3 个答案:

答案 0 :(得分:3)

如果您使用双引号(“”)将"spec_dir"属性更改为根,则Jasmine将从根目录开始并遍历子目录。

然后问题是还会包含 node_modules 目录。所以你必须在spec_files中使用一种极不可能在那里找到的规范模式。我使用了["**/*.[sS]pec.js"],这意味着命名我的spec文件module_a.spec.js。

{
  "spec_dir": "",
  "spec_files": [
    "**/*.[sS]pec.js"
  ],
  "helpers": [
    "helpers/**/*.js"
  ],
  "stopSpecOnExpectationFailure": false,
  "random": false
}

答案 1 :(得分:0)

您还可以从源根目录(可能是src /)中分离您的spec文件,以测试/使用等效的文件夹结构:

project root: /
 package.json
 spec
    --> jasmine_examples
 src/
   module_a
   module_b
   module_c
 test/
   module_a
   module_b
   module_c

然后在你的jasmine配置中定义spec文件,如:

"spec_files": [
  "test/**/*.spec.js"
],

答案 2 :(得分:0)

解决此问题的最佳方法是设置" spec_dir" root,然后使用spec_files和glob模式匹配不同位置内的多个文件,例如。

{
  "spec_dir": "",
  "spec_files": [
    "module_a/**/*.[sS]pec.js",
    "module_b/**/*.[sS]pec.js",
    "module_c/**/*.[sS]pec.js"
  ],
  "stopSpecOnExpectationFailure": false,
  "random": true
}

以下配置(位于jasmne.json中)将匹配每个" *。spec.js"该模块内的文件为dirs。

您可以通过将所有模块移动到公共目录来改善这一点,例如: " SRC"然后改变" jasmine.json"到:

{
  "spec_dir": "",
  "spec_files": [
    "src/**/*.[sS]pec.js"
  ],
  "stopSpecOnExpectationFailure": false,
  "random": true
}

这将让你一劳永逸地忘记这个文件的维护......我们都知道我们如何讨厌更新所有那些讨厌的配置^^