【问题标题】:Capybara click_link works wrongCapybara click_link 工作错误
【发布时间】:2016-06-01 19:25:55
【问题描述】:

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

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”和控制器响应,按创建日期排序,按后代顺序排列。 我的问题是当水豚点击这个链接时,GET 请求只有路径,不需要参数。我在这里使用 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驱动问题吗? 谢谢。抱歉文字不好,这是我的第一个问题。

【问题讨论】:

  • 谢谢大家,我的问题在于 FactoryGirl 生成的记录具有相同的 created_at 字段

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


【解决方案1】:

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

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

使用该方法设置键,然后继续单击链接应该可以工作。

【讨论】:

  • 谢谢,但错误在于 Factory Girl 生成具有相同 created_at 字段的记录,这就是我的测试失败。
【解决方案2】:

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

如果您实际使用的是 poltergeist 驱动程序,那么您可能存在竞争条件,因为 click_button 是异步的,这可能会导致在链接点击实际发生之前未设置 by_created_at 参数。您可以通过在 click_buttonclick_link 调用之间放置一个 sleep 2 来测试这是否是问题

【讨论】:

  • 谢谢,但错误在于 Factory Girl 生成具有相同 created_at 字段的记录,这就是我的测试失败。
猜你喜欢
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多