Capybara click_link工作错误

时间:2016-06-01 19:25:56

标签: ruby-on-rails rspec capybara integration-testing poltergeist

我有这样的错误。这是我的代码:

it "shows places sorted by date of creation" do
  click_button( I18n.t("models.places.actions.index.sort_by"))
  click_link(I18n.t("models.places.actions.index.date_of_creation"))

  sorted_places_names = places.map(&:name).reverse
  link_names = all("a.place-link").map(&:text)

  expect(link_names).to eq(sorted_places_names)
end

我的问题是点击链接必须发送参数: " ?by_created_at: true"和控制器响应按创建日期排序的位置,以后代顺序排列。 我的问题是当capybara点击这个链接时,GET请求只有路径,没有需要params。我在这里使用了poltergeist。

我也有这样的考试:

it "shows orders today" do
  today_order.customer.reputations << create(:reputation, place: place)

  visit place_statistics_loyalty_path(place)
  click_link(I18n.t("statistics.loyalty.today"))

  expect(page).to have_selector("#order_#{today_order.id}")
end

它测试了类似的行为。它工作正常,但在这里我不使用js。 是javascript驱动问题吗? 谢谢。对不好的文字,这是我的第一个问题。

2 个答案:

答案 0 :(得分:0)

您要做的是使用Poltergeist的“send_key”方法,如文档中所示:

https://github.com/teampoltergeist/poltergeist#sending-keys

使用该方法设置密钥然后继续单击链接应该有效。

答案 1 :(得分:0)

您是否确定您实际上正在使用poltergeist进行该测试,因为它上面没有js: truedriver: :poltergeist元数据?如果它没有使用poltergeist并且实际上只是使用了rack_test驱动程序,那么没有JS会被抢占,你可能会看到你所看到的行为。

如果您实际使用的是poltergeist驱动程序,那么由于click_button是异步的,可能会出现竞争条件,这可能导致在实际发生链接点击之前不设置by_created_at参数。您可以在sleep 2click_button来电之间加click_link来测试是否存在问题