ruby-on-rails - 如何在 Rails 的同一个文件中多次运行 rake 任务

标签 ruby-on-rails ruby-on-rails-4 minitest

我在一个文件中编写了多个测试用例,我想在每个测试中单独运行 rake 任务。 当我使用此命令运行测试用例时:

ruby -I test test/integration/my_test_file.rb 

然后 rake 任务只运行一次。我的许多测试都失败了。 但是如果我用这个命令单独运行所有失败的测试

ruby -I test test/integration/my_test_file.rb -n test_name

那么所有的测试都通过了。

问题是 rake 任务在第一种情况下只运行一次。 但是对于单个测试,Rake 任务每次都会为每个测试用例运行

这是我在测试文件中设置 rake 任务的方式

require "rake"
MyAppName::Application.load_tasks

在每个测试用例中我都有这个:

Rake::Task['tasks:my_task_name'].invoke

那么我该如何解决我的问题呢?

最佳答案

好的,我得到了答案。

这里是您如何在同一范围内再次调用 Rake::Task['tasks:task_name'],无论您想在 Controller 文件或测试文件中运行 rake 任务。

每当 Rake::Task['tasks:my_task_name'].invoke 执行时,它都会设置一个标志 @already_invoked,这意味着您不能在其中再次调用该任务同一个文件。 所以你可以这样做

Rake::Task['tasks:my_task_name'].invoke

Rake::Task['tasks:send_overdue_reminders'].reenable

这里Rake::Task['tasks:send_overdue_reminders'].reenable翻转@already_invoked的状态,你可以在同一个文件中多次调用rake任务

关于ruby-on-rails - 如何在 Rails 的同一个文件中多次运行 rake 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36591038/

相关文章:

html - 我怎样才能制作背景图片 scalebale

ruby-on-rails - 如何在 Ruby 调试器 (ruby-debug/rdebug) 中设置变量?

ruby-on-rails - Rails 4 + 多键关联

ruby-on-rails - 如何为新模板添加路由?

ruby-on-rails - 使用 Factory_girl 建立测试中关联

ruby-on-rails - 将带时区的日期时间字符串转换为带时区的日期时间或 rails 3 中的 UTC

ruby-on-rails - Wicked gem Rails - 如何创建一个新对象

ruby-on-rails - Vagrant 工作流程 - vagrant ssh、vagrant destroy、vagrant up 命令

ruby-on-rails - 如何在 Rails 的 Controller 测试中测试第二个重定向

ruby - MinitTest Spec 对第二个参数的混淆