我正在使用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测试文件中,我得到一个下拉列表来运行模块“group a”或模块“group b”(通过QUnit的UI)。我想要的是能够以编程方式指定我想通过grunt qunit
任务运行特定模块。
答案 0 :(得分: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
答案 1 :(得分:0)
我认为可行的解决方法可能是定义模块过滤器选项,如果存在,则将其附加到URL。 Gruntfile.js中有类似的东西
var moduleFilter = '';
if (grunt.option('module')) {
moduleFilter = '?module=' + grunt.option('module')
}
然后使用它:
grunt.initConfig({
qunit: {
options: {
...
urls: [
'http://localhost:3000/qunit' + moduleFilter
]
}
}
});
请注意,这仅适用于一个模块。
也许(但未经测试)您可以使用filter
查询参数而不是模块,
并命名您的模块以匹配过滤器,以便能够对它们进行分组。
注意:运行多个模块不是QUnit支持的。
<强>参考文献:强>