我希望能够为我必须从另一个任务调用的任务传递参数
不带参数的调用对我来说是这样的:
Rake::Task["mytask1"].invoke
但是,对于这样的参数,它不会:
Rake::Task["mytask1[1,v18_0,20141230]"].invoke
谢谢
我有一个rake任务测试,我按照我在网上找到的唯一例子进行设置.
它看起来像这样:
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显示之前和之后打印任务只运行一次).