【问题标题】:Unable to test two rake tasks in one file无法在一个文件中测试两个 rake 任务
【发布时间】:2018-05-21 21:57:25
【问题描述】:

我正在尝试为一些 rake 任务编写一些基本的烟雾测试。由于我不明白的原因,如果两者都未注释,我会收到 Don't know how to build task... 错误。如果我推荐任何一个,它工作正常(以任何顺序)。

spec/tasks/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 tutorial

【问题讨论】:

    标签: ruby-on-rails rspec rake


    【解决方案1】:

    这是有效的,改编自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
    

    【讨论】:

      猜你喜欢
      • 2015-09-23
      • 1970-01-01
      • 2010-11-18
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 2020-03-15
      • 2016-09-16
      相关资源
      最近更新 更多