2013-04-26 17 views
6

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

所以问题是,我可以告诉Grunt qunit任务只运行某个模块吗?我想一个命令行参数,所以,我没有改变我的Gruntfile,是这样的:

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

UPDATE

要清楚,我想运行中的模块创建的内容一个测试套件使用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测试文件我得到一个下拉到运行任一模块“基团一”或模块“组b” (通过QUnit的用户界面)。我想要的是能够以编程方式指定我想通过grunt qunit任务运行特定模块。

回答

0

如果你的呼噜声,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

+0

虽然如此,我希望能找到更多的东西一般。基本上,当我添加一个模块到我的测试套件时,我不想为它创建一个新的模块目标。感谢张贴虽然。 – jakerella 2013-12-31 20:00:00

+0

那么,你可以创建一个查看'。/ test'的任务,并为每个子目录配置一个模块,然后将它们排队等待执行,并接受一个模块参数进行过滤。 – Stuart 2013-12-31 20:06:50

+0

是的,但我更多指的是能够运行QUnit的“模块”。你在这里创建的是不同的html测试套件,这些测试套件在这个角色中起作用。我想要的是能够运行在测试套件中声明的模块,而不是新创建的html文件。 – jakerella 2013-12-31 20:37:22

0

一个单独的模块,我认为,一个可行的解决办法可能是定义一个模块过滤器选项,如果存在,请将其附加到网址。 像这样的事情在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会支持的。

参考文献:

+0

这看起来确实是一个更可行的解决方案,当我回到这个项目时,我会尝试一下。 – jakerella 2014-07-02 12:33:18

相关问题