对于如何编写复杂的 Gruntfile.js
并将其用于测试,我有点难以理解。我是否以正确的方式使用 Grunt?我想向社区寻求帮助并以其他方式做出贡献。
我正在为 Grunt 编写一个新任务,并希望在 Github 和 npm 上向广大受众推出。我想为此任务进行自动化测试(我想学习如何正确地完成它!)。
我想测试不同的选项组合(现在大约 15 个)。所以,我应该多次:
- 运行清理
- 设置下一个选项运行我的任务
- 运行测试并将选项对象传递给测试
为了更好地理解一些不工作的代码:
Gruntfile:
grunt.initConfig({
test_my_task: {
testBasic: {
options: {
//first set
}
},
testIgnore: {
options: {
//another set
}
},
//...
}
clean: {
tests: ['tmp'] // mmm... clean test directory
},
// mmm... unit tests.
nodeunit: {
tests: ['test/*.js'] //tests code is in 'tests/' dir
}
});
grunt.registerTask('test', ['test_my_task']);
我知道如何在 options
对象给出时检查 tmp/
文件夹是否处于所需状态。
问题在于把东西放在一起。
我只要求模板代码作为答案,npo 需要提供工作示例。
PS:你可以提出另一个测试工具,nodeunit不是必须的。
PPS:废话,我现在可以用普通的 javascript 写这个了!也许我做错了,我想把 Grunt 放到单元测试中?但我想通过 Grunt 传递的不同选项来测试我的任务在真实环境中的工作方式......
最佳答案
您可能想看看 grunt-lintspaces配置。测试 look like this ,这似乎是一个很好的方法。 grunt-lintspaces 使用 nodeunit,但现在似乎有很多插件。
如果您不想测试实际的 grunt 输出而是功能,您可以使用 grunt-mocha-test - https://github.com/pghalliday/grunt-mocha-test我用于 the grunt-available-tasks tests .我个人更喜欢describe风格的测试,读起来很好;使用它的好处是您实际上可以测试插件的功能,而无需在 Gruntfile 中包含大量配置;即测试代码应该在测试中。
Grunt 已经过很好的测试,因此测试其配置是否有效是没有意义的。只需测试您自己的插件的功能即可。
关于node.js - 如何测试 Grunt 任务?理解和最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20542300/