水豚 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: true
或 driver: :poltergeist
元数据?如果它不使用 poltergeist 而实际上只是使用 rack_test 驱动程序,则不会执行任何 JS,您可能会看到您所看到的行为。
如果您实际使用的是 poltergeist 驱动程序,则可能存在竞争条件,因为 click_button 是异步的,这可能导致 by_created_at 参数未在 link 点击确实发生了。您可以通过在 click_button
和 click_link
调用
之间放置一个 sleep 2
来测试这是否是问题所在
我有这样的错误。这是我的代码:
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: true
或 driver: :poltergeist
元数据?如果它不使用 poltergeist 而实际上只是使用 rack_test 驱动程序,则不会执行任何 JS,您可能会看到您所看到的行为。
如果您实际使用的是 poltergeist 驱动程序,则可能存在竞争条件,因为 click_button 是异步的,这可能导致 by_created_at 参数未在 link 点击确实发生了。您可以通过在 click_button
和 click_link
调用
sleep 2
来测试这是否是问题所在