水豚 click_link 工作不正常

Capybara click_link works wrong

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

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

我的问题是点击link这里必须发送参数: “?by_created_at: true”和控制器响应,其中按创建日期按后代顺序对位置进行排序。 我的问题是当水豚点击这个 link 时,GET 请求只有路径,没有参数 needed.I`m using poltergeist here.

我也有这样的测试:

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 驱动问题吗? 谢谢。抱歉文字不好,这是我的第一个问题。

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

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

使用该方法设置键,然后继续单击 link 应该可以。

你确定你真的在使用 poltergeist 进行该测试,因为上面没有 js: truedriver: :poltergeist 元数据?如果它不使用 poltergeist 而实际上只是使用 rack_test 驱动程序,则不会执行任何 JS,您可能会看到您所看到的行为。

如果您实际使用的是 poltergeist 驱动程序,则可能存在竞争条件,因为 click_button 是异步的,这可能导致 by_created_at 参数未在 link 点击确实发生了。您可以通过在 click_buttonclick_link 调用

之间放置一个 sleep 2 来测试这是否是问题所在