node.js - 如何测试 Grunt 任务?理解和最佳实践

标签 node.js unit-testing gruntjs nodeunit

对于如何编写复杂的 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/

相关文章:

node.js - 如何通过 "dn"的 block 找到 Node AD 中的用户?

node.js - 从 jade 中的 Node 渲染数据

reactjs - html 中的 Jest 覆盖率报告缺少覆盖率值

node.js - Nodeunit 未检测到 did()

gruntjs - Codeship 使用 compass 运行 grunt

javascript - 在构建时执行NormalModule,由加载器构建后,然后保存到json文件

javascript - 从nodejs中的第二个函数获取结果

javascript - 仅在闭包中定义的模拟/ stub 对象

java - 不产生不同输出的单元测试方法

css - calc 不适用于手写笔和咕噜声