2

开始使用 Grunt 时我一直很开心,但遇到了一种情况,我不知道最好的行动方案是什么。

tl;博士

grunt 可以在不中止任务的情况下发出警告吗?grunt --force 会这样做,但这会将 force 选项应用于所有任务。

问题:在运行包含 jasmine 的任务(来自 grunt-contrib-jasmine)时,如果它找不到包含至少一个单元测试的规范(即it("does stuff, function () {});),那么它会引发警告并因此中止整个任务。

代码

这是我用来建立我的网站的任务:

grunt.registerTask('build', ['clean', 'sass', 'images', 'favicons', 'lint', 'minify', 'jasmine', 'hashify']);

这是茉莉任务配置:

jasmine: {
        testdev: {
            src: folders.js.src + '/**/*.js',
            options: {
                'specs': folders.spec.src + '/*Spec.js',
                'helpers': folders.spec.src + '/*Helper.js'
            }
        },
        //etc etc, more targets for minified code testing and istanbul coverage
}

这些是明智的解决方案吗?

选项 1)我可以使用 grunt --force 但我不愿意,因为它会影响我可能希望真正使任务失败的其他进程。

选项 2) 警告但不要失败。Grunt 是否有一个不会中止任务的 STDOUT 警告?

选项 3)我可以分叉插件并将选项“强制”添加到 jasmine 任务中,以便它继续,但仍会将其警告记录到控制台。

选项 4) 如果在运行 jasmine 之前没有找到,Grunt 会创建一个空的虚拟规范。这对我来说似乎有点笨拙。

可能有一个我还没有想到的更好的解决方案。

提前致谢。

4

1 回答 1

0

看看Testem。我在另一个单元测试问题中回答了这个问题,但它的好处是它就像watch你的测试任务;更新你的代码,它运行,出现问题,它在控制台上记录它(并通过你运行它的浏览器)。

此外,因为它使用浏览器来运行测试,所以您可以在项目代码旁边有一个选项卡,该选项卡将显示通过/失败的测试计数。IETestem (60/60)

https://github.com/airportyh/testem

如果您也想在构建过程中运行它,可以使用grunt-testem。请注意在运行此任务之前退出 testem 运行器,否则它将失败。希望这可以帮助。:-)

于 2013-10-17T18:51:07.233 回答