gpt4 book ai didi

ruby - 我可以覆盖任务 :environment in test_helper. rb 来测试 rake 任务吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:39 24 4
gpt4 key购买 nike

我在 Rakefile 中有一系列 rake 任务,我想将其作为我的规范等的一部分进行测试。每个任务都以以下形式定义:

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

:environment 任务设置 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 文件中的 :environment 任务,以便我的 rake 测试与我的测试数据库交互,而不是与生产交互?我试过在帮助程序文件中重新定义任务,但这不起作用。

任何解决方案的帮助都会很棒,因为过去一周我一直坚持这个问题。

最佳答案

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

我不知道这对维持一些影响深远的状态的一组复杂的相互依赖的任务有多好:可能不太好,但话又说回来,这很可能表明其他一些设计问题.. .

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

编辑:曾经有一篇博客文章 here (a) 说同样的话,而 (b) 说得更好。看来也是他先说的。

关于ruby - 我可以覆盖任务 :environment in test_helper. rb 来测试 rake 任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/925407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com