2009-05-29 80 views
10

我有一系列的Rake文件Rake任务,我想测试我的规格等各项任务在表单中定义的一部分:我可以重写test_helper.rb中的task来测试rake任务吗?

task :do_somthing => :environment do 
    # Do something with the database here 
end 

凡:环境任务设置一个ActiveRecord/DataMapper数据库连接和类。我没有将它作为Rails的一部分,但我有一系列我喜欢作为BDD的一部分运行的测试。

这段代码演示了我如何测试rake任务。

def setup 
    @rake = Rake::Application.new 
    Rake.application = @rake 
    load File.dirname(__FILE__) + '/../../tasks/do_something.rake' 
end 

should "import data" do 
    @rake["do_something"].invoke 
    assert something_in_the_database 
end 

所以我请求帮助 - 这可能为忽略的:在我的test_helper.rb中文件环境的任务,所以我我耙测试与我的测试数据库交互,而不是生产的?我已经尝试在帮助程序文件中重新定义任务,但这不起作用。

解决方案的任何帮助都很好,因为过去一周我一直坚持这一点。

回答

8

我的“解决方案”,以类似的问题是从我的.rake文件中提取所有的逻辑和创建类执行的任务,只留下一个在耙文件一行调用,这是我在测试不感到有信心太难。然后可以正常地测试这些类。

我不知道这样做能够承受一组复杂的相互依赖的任务,这些任务会维持一些影响深远的状态:可能不太好,但是再次说明这很可能是其他一些设计问题的表现。 ..

我很好奇,看看我是否错过了更好的东西。

编辑:曾经有一个博客帖子here是:(a)也说了同样的事情,(B)表示,它更好。看起来他也是先说的。

+0

谢谢您的回答麦克来测试我的Rake任务。我已经做了多一些,在平均时间耙乱搞,我认为在test_helper.rb中这两种方法可能会争取解决一些方法。 高清rake_up Rake.application =耙:: Application.new 耙:: Task.define_task:环境 Rake.application 结束 高清rake_down Rake.application =零 结束 – 2009-05-29 14:57:01

+0

似乎是博客文章的链接死了。我能找到的内容,唯一的地方就在这里:什么投入Rake任务(http://www.artima.com/forums//threaded.jsp?forum=123&thread=251328) – ThomasW 2012-02-23 08:38:47

0

当您正在运行测试环境时,正在加载的是测试。

因此您只与数据库 进行交互。

,所以我不认为有任何理由来覆盖你的耙任务test_helper.rb中

1

我认为你正在寻找这条线: 要求(File.join(RAILS_ROOT,“配置”,“环境” )) 这正是你在“任务:环境”查找执行

我用它使用rspec的

相关问题