У меня есть тест на рейк, который я настраиваю после единственных примеров, которые я могу найти в Интернете.Почему моя задача рейка выполняется дважды в моем тесте?
Это выглядит следующим образом:
require 'test_helper'
require 'minitest/mock'
require 'rake'
class TestScrapeWelcome < ActiveSupport::TestCase
def setup
Rake.application.init
Rake.application.load_rakefile
@task = Rake::Task['scrape:scrape']
@task.reenable
end
def teardown
Rake::Task.clear
end
test "scraping text and sending to elasticsearch" do
mocked_client = Minitest::Mock.new
get_fixtures.each_with_index do |arg,i|
mocked_client.expect :index, :return_value, [index: "test", type: 'welcome', id: i, body: arg]
end
Elasticsearch::Model.stub :client, mocked_client do
@task.invoke
end
assert mocked_client.verify
end
private
def get_fixtures
(0..11).map { |i|
File.read("test/fixtures/scrape/index_#{i}.json")
}
end
end
Но после того, как задача выполняется, как только он начинает работать снова без меня делать что-либо (puts
печатает до и после @task.invoke
показать, что задача только запустить один раз).