我可以重写test_helper.rb中的task来测试rake任务吗?
问题描述:
我有一系列的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中文件环境的任务,所以我我耙测试与我的测试数据库交互,而不是生产的?我已经尝试在帮助程序文件中重新定义任务,但这不起作用。
解决方案的任何帮助都很好,因为过去一周我一直坚持这一点。
答
我的“解决方案”,以类似的问题是从我的.rake文件中提取所有的逻辑和创建类执行的任务,只留下一个在耙文件一行调用,这是我在测试不感到有信心太难。然后可以正常地测试这些类。
我不知道这样做能够承受一组复杂的相互依赖的任务,这些任务会维持一些影响深远的状态:可能不太好,但是再次说明这很可能是其他一些设计问题的表现。 ..
我很好奇,看看我是否错过了更好的东西。
编辑:曾经有一个博客帖子here是:(a)也说了同样的事情,(B)表示,它更好。看起来他也是先说的。
答
当您正在运行测试环境时,正在加载的是测试。
因此您只与数据库 进行交互。
,所以我不认为有任何理由来覆盖你的耙任务test_helper.rb中
答
我认为你正在寻找这条线: 要求(File.join(RAILS_ROOT,“配置”,“环境” )) 这正是你在“任务:环境”查找执行
我用它使用rspec的
谢谢您的回答麦克来测试我的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
似乎是博客文章的链接死了。我能找到的内容,唯一的地方就在这里:什么投入Rake任务(http://www.artima.com/forums//threaded.jsp?forum=123&thread=251328) – ThomasW 2012-02-23 08:38:47