ruby-on-rails - 无法在一个文件中测试两个 rake 任务
问题描述
我正在尝试为一些 rake 任务编写一些基本的烟雾测试。由于我不明白的原因,Don't know how to build task...
如果两者都未注释,我会收到错误消息。如果我推荐任何一个,它都可以正常工作(以任何顺序)。
规范/任务/foo_spec.rb
require "rails_helper"
require "rake"
describe "Foo rake tasks" do
before do
@rake = Rake::Application.new
Rake.application = @rake
Rake.application.rake_require "../rakelib/foo"
Rake::Task.define_task(:environment)
end
describe "rake foo:bar" do
before do
@task_name = "foo:bar"
end
it "runs without errors" do
expect { @rake[@task_name].invoke('1') }.not_to raise_error
end
end
describe "rake foo:rab" do
before do
@task_name = "foo:rab"
end
it "runs without errors" do
expect { @rake[@task_name].invoke('1', 'boo') }.not_to raise_error
end
end
end
end
此设置是对本教程的改编。
解决方案
这是有效的方法,改编自this。
require "rails_helper"
require "rake"
describe "Foo rake tasks" do
before :all do
Rake.application.rake_require "../rakelib/foo"
Rake::Task.define_task(:environment)
end
describe "rake foo:bar" do
let :run_rake_task do
Rake::Task["foo:bar"].reenable
Rake.application.invoke_task "foo:bar"
end
it "runs without errors" do
expect { run_rake_task }.not_to raise_error
end
end
end
推荐阅读
- apache-spark - 如何在 HDFS 文件上执行自定义 C++ 二进制文件
- python - $push 一个对象到一个嵌套数组
- javascript - 在 Jhipster Angular 项目中添加 jquery
- google-app-engine - 如何在谷歌应用引擎和计算引擎之间建立私有连接?
- javascript - Vue 路由器 - 从 JSON 构建
- javascript - 从json文件读取时无法将未定义转换为对象
- delphi - delphi 要调用的函数 TOleControl.GetIDispatchProp 已被链接器消除
- php - 我刷新了我的 opencart 网站中的缓存,现在网站没有加载?
- python - 私下更新字典?
- c++ - 如何从函数返回单个 boost::range 或两个连接的 boost::ranges