6

我在开发时使用 Grunt、PhantomJS 和“watch”插件来运行我的 QUnit 测试(独立于 CI)。我希望能够专注于特定的 QUnit 模块,同时我正在处理该模块的测试所关注的代码。在浏览器中运行 QUnit 时,我可以指定要运行的模块(相对于所有测试)。

所以问题是,我可以告诉 Grunt qunit 任务只运行某个模块吗?我正在考虑一个命令行参数,这样我就不必更改我的 Gruntfile,例如:

~$ grunt qunit --module="test this stuff, test that stuff"

更新

需要明确的是,我要运行的是使用 QUnit 的module()方法在测试套件中创建的模块:

module( "group a" );
test( "a basic test example", function() {
    ok( true, "this test is fine" );
});
test( "a basic test example 2", function() {
    ok( true, "this test is fine" );
});

module( "group b" );
test( "a basic test example 3", function() {
    ok( true, "this test is fine" );
});
test( "a basic test example 4", function() {
    ok( true, "this test is fine" );
});

在上面的示例中,此代码都在一个测试套件中,但在生成的 html 测试文件中,我得到一个下拉菜单来运行模块“组 a”或模块“组 b”(通过 QUnit 的 UI)。我想要的是能够以编程方式指定我想通过grunt qunit任务运行特定模块。

4

2 回答 2

0

如果您像这样为 grunt-qunit 设置配置:

grunt.initConfig({
  qunit: {
    module1: {
      options: {
        urls: [
         'http://localhost:8000/test/module1/foo.html',
         'http://localhost:8000/test/module1/bar.html',
        ]
      }
    },
    module2: {
      options: {
        urls: [
         'http://localhost:8000/test/module2/foo.html',
         'http://localhost:8000/test/module2/bar.html',
        ]
      }
    }
  }
  ...

您可以运行单个模块,例如grunt qunit:module1

于 2013-12-31T19:56:38.537 回答
0

I think a viable workaround could be to define a module filter option, and if it exist, append it to the urls. Something like this in the Gruntfile.js

var moduleFilter =  '';
if (grunt.option('module')) {
  moduleFilter = '?module=' + grunt.option('module')
}

then using it:

grunt.initConfig({
  qunit: {
    options: {
        ...
        urls: [
          'http://localhost:3000/qunit' + moduleFilter
        ]
    }
  }
});

Note that this will work for one module only. Maybe (but not tested) you can use the filter query param instead of module, and name your modules to match the filter, in order to be able to group them.

Note: Running multiple modules is not something that QUnit will support.

References:

于 2014-07-01T14:52:02.080 回答