【问题标题】:How to run jasmine specs across multiple test directories如何跨多个测试目录运行 jasmine 规范
【发布时间】:2017-09-07 14:03:55
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 你试过module_a/spec/*.jsmodule_a/**/*.js吗?
  • 我认为这给我留下了同样的问题,我仍然需要手动添加每个包含规范的模块。
  • 那么*/spec/*.js也许
  • 我认为唯一的方法是使用构建脚本生成 Jasmine.json 文件并构建 spec_files 数组。

标签: node.js jasmine automated-tests


【解决方案1】:

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

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

然后在您的 jasmine 配置中定义规范文件,例如:

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

【讨论】:

    【解决方案2】:

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

    那么问题将是 node_modules 目录也将包括在内。因此,您必须在spec_files 中使用一个极不可能在其中找到的规范模式。我使用了["**/*.[sS]pec.js"],这意味着将我的规范文件命名为 module_a.spec.js。

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

    【讨论】:

      【解决方案3】:

      解决此问题的最佳方法是将“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”文件。

      您可以通过将所有模块移动到公共目录来改进这一点,例如“src”,然后将“jasmine.json”更改为:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多