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或任何无头浏览器。
答案 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
}
这将让你一劳永逸地忘记这个文件的维护......我们都知道我们如何讨厌更新所有那些讨厌的配置^^