javascript - 大型 JS 应用程序测试 - 避免多个 karma.conf.js 文件

标签 javascript testing gruntjs karma-runner

我使用 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/

相关文章:

javascript - 断开 sails.js socket.io 的逻辑

javascript - 如何使用自定义颜色而不是预定义颜色

PhpSpec - 检查方法返回一个整数而不是 "willReturn(x)"

gruntjs - 任务 "typescript"在 grunt 中失败

javascript - 我应该如何管理 AngularJS 中不同环境的配置

javascript - 在 javascript 中动态地将 HTML 表分解为两个表

javascript - 在 jquery 中传递超链接数组

unit-testing - 单元测试私有(private)方法似乎使整个解决方案更容易

testing - 状态代码测试始终通过 Sails.js 和 Mocha

node.js - 如何将树中的所有 npm 依赖项解析为单一版本