为grunt插件编写一些测试代码时,如何动态更改grunt.tasks(...)使用的配置

时间:2014-07-14 10:51:02

标签: unit-testing gruntjs vows

我写了一个咕噜的插件。 在用vows编写的测试中,我想在调用之前更改我的gruntfile中定义的一些配置对象

grunt.tasks(["my_task"], {}, function(){
    // do something}
)

目标是执行我在gruntfile中使用不同配置多次定义的任务。

我无法使用经典的nodeunit方法,因为我想要更改的配置不是我的任务的配置。另外我在nodeunit启动grunt任务时遇到了一些问题。

我有这样的事情:

grunt.initConfig({
    object_I_want_to_alter:{...},
    the_task_I_call:{...}
})

似乎没有真正的解决方案来驱动API中的grunt,因为它是一个命令行工具。 尽管如此,仍有两种API方法可以提供帮助:grunt.util.spawn和grunt.tasks

两者似乎都是黑盒子,在调用时读取gruntfile。

如果我尝试第一次调用grunt.tasks()来预加载配置,我可以改变我的对象,但第二次调用grunt.tasks()似乎完全重新加载gruntfile并且不使用以前的配置。

是否有人对此目标或其他方式有所了解?

感谢。

1 个答案:

答案 0 :(得分:0)

好的,找到了解决方案。

来自咕噜咕噜咕噜咕噜咕噜的This answer在我脑海中待了一段时间,但我现在才明白这一点。

实际上,如果您删除gruntfile并首先使用hack从测试中完成所有操作,那么您可以随意使用您的配置。

感谢Kyle Robinson Young提供的信息。

尽管如此,在grunt网站上有更多关于此的内容会很棒。