我在一个文件中编写了多个测试用例,我想在每个测试中单独运行 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/