Невозможно протестировать две грабли в одном файле - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь написать несколько базовых тестов дыма для нескольких заданий.По причинам, которые я не понимаю, я получаю ошибку 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

Эта настройка является адаптацией от этот урок .

1 Ответ

0 голосов
/ 22 мая 2018

Вот что работает, адаптировано из этого .

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
...