9

我有点难以理解如何编写复杂的代码Gruntfile.js并将其用于测试。我是否以正确的方式使用 Grunt?我想向社区寻求帮助并以其他方式做出贡献。

我正在为 Grunt 编写一个新任务,并希望在 Github 和 npm 上向广大受众推广。我想为这个任务进行自动化测试(我想学习如何正确地完成它!)。

我想测试不同的选项组合(现在大约 15 个)。所以,我应该多次:

  • 运行清理
  • 使用下一个选项集运行我的任务
  • 运行测试并将选项对象传递给测试

为了更好地理解一些非工作代码:

咕噜文件:

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']);

我知道在给定对象时如何检查tmp/文件夹是否处于所需状态options

问题是把东西放在一起。

我只要求模板代码作为答案,npo 需要放置工作示例。

PS:你可以提出另一个测试工具,nodeunit不是必须的。

PPS:废话,我现在可以用普通的 javascript 写这个了!也许我做错了,我想把 Grunt 放到单元测试中?但我想通过 Grunt 传递的不同选项来测试我的任务在真实环境中的工作方式......

4

1 回答 1

9

您可能想查看grunt-lintspaces配置。测试看起来像这样,这似乎是一个很好的方法。grunt-lintspaces 使用 nodeunit 但这些天似乎有很多插件。

如果您不想测试实际的 grunt 输出而是功能,您可以使用 grunt-mocha-test - https://github.com/pghalliday/grunt-mocha-test我用于grunt-available-tasks测试。我个人更喜欢describe风格的测试,读起来很好;使用它的好处是您实际上可以测试插件的功能,而无需在 Gruntfile 中包含大量配置;即测试代码应该在测试中。

Grunt 已经过很好的测试,因此测试它的配置是否有效是没有意义的。只需测试您自己的插件的功能。

于 2013-12-12T11:53:40.720 回答