当没有spec文件或spec文件为空时,Grunt-contrib-jasmine会中止任务

开始使用Grunt已经非常有趣了,但是遇到了一个我不知道最佳行动scheme的情况。

TL;博士

可以咕嘟咕嘟地发出警告而不中止任务? grunt –force将会这样做,但是这会将force选项应用于所有任务。

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

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

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

这里是茉莉花任务configuration:

 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 } 

是否有这些明智的解决scheme?

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

选项2)警告但不要失败。 Grunt有没有中止任务的STDOUT警告?

选项3)我可以分叉插件,并添加选项'强制'只是茉莉花任务,所以它继续,但仍然将其警告logging到控制台。

选项4)如果在运行茉莉花之前没有find一个,则Grunt会创build一个空的虚拟规格。 这对我来说似乎有点笨拙。

可能有更好的解决办法,我还没有想到。

提前致谢。

看看Testem。 我在另一个unit testing问题中回答了这个问题 ,但是这个问题的好处在于它就像是一个testing任务。 更新你的代码,它运行,出了问题,它会在控制台(通过你运行的浏览器)上logging下来。

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

https://github.com/airportyh/testem

如果你也想把它作为你的构build过程的一部分来运行的话, 那就是grunt-testem 。 运行此任务之前,请注意您退出了testem runner,否则将失败。 希望这可以帮助。 🙂