如何等待ES索引在Rspec和Capybara完成?

tom*_*nek 7 ruby rspec ruby-on-rails elasticsearch tire

如何避免sleep 1在该示例中使用等待ES索引完成?

describe Question do
  before do
    create :question, content: "Some test question",
                      app: @app
    create :question, content: "Some other question",
                      app: @app
    sleep 1
  end

  it_behaves_like "search results found" do
    let(:query) { "Some" }
    let(:results) { ["Some test question", "Some other question"] }
  end
end
Run Code Online (Sandbox Code Playgroud)

Dav*_* S. 12

调用'refresh'API端点.如果您正在使用Tire和ActiveModel集成功能,那么它将是:

Question.tire.index.refresh
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用curl直接命中端点.