我使用 karma + jasmine + phantom 进行 headless Javascript 测试。
我遇到的问题是我有一个非常大的应用程序,其中包含许多我想测试的 JS 模块。 所以我需要为每个案例自定义模拟,并为每个案例自定义包含。
karma.conf.js
只允许我拥有 files
数组,其中包含所有要包含的文件的模式,如果我的应用程序很小而不是一个包含大量文件和模块的大型应用。
我的解决方案 目前 - 为每个测试用例创建多个 karma.conf.js
文件。但这真的很糟糕,因为有这么多配置文件是一个很大的膨胀,如果我想更改一个设置(比如 autoWatch),我需要更改所有配置文件。
我的其他解决方案 - 在karma.conf.js
前面编写自定义处理程序来处理其他参数(规范文件或文件夹以绕过 karma 搜索其配置文件)并简单地动态构建 files
数组。
现在我看到的问题是 karma 只运行一次,我将被限制运行一个测试规范......我不想修改 KARMA 本身。
我也考虑过使用 Grunt,但还没有找到一种方法让它适用于多个测试用例。
顺便说一句,我的理想结构是这样的:
拥有文件:
test/specs/category/unit1_spec.js
test/mocks/category/unit1_mock.js
配置文件:
files: [
{
'includes': [array_of_includes],
'spec': 'spec_file'
}
]
模拟文件将从适当的模拟目录中自动抓取。
我可以执行 karma start test/specs/category
,它会递归地运行文件夹内的所有测试用例。
tl;dr - 我想舒适地测试一个大应用。
对于处理此任务的任何建议,我将不胜感激。
最佳答案
使用 ENV 变量将参数传递给 karma.conf.js 中的文件:
files: [
include1, include2, ..., includeN,
process.env.JS_TESTS + "/*.js"
]
然后像这样运行 karma :
JS_TESTS=test/category2 karma start karma.conf.js
关于javascript - 大型 JS 应用程序测试 - 避免多个 karma.conf.js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034256/