我有这样的错误。这是我的代码:
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驱动问题吗? 谢谢。对不好的文字,这是我的第一个问题。
答案 0 :(得分:0)
您要做的是使用Poltergeist的“send_key”方法,如文档中所示:
https://github.com/teampoltergeist/poltergeist#sending-keys
使用该方法设置密钥然后继续单击链接应该有效。
答案 1 :(得分:0)
您是否确定您实际上正在使用poltergeist进行该测试,因为它上面没有js: true
或driver: :poltergeist
元数据?如果它没有使用poltergeist并且实际上只是使用了rack_test驱动程序,那么没有JS会被抢占,你可能会看到你所看到的行为。
如果您实际使用的是poltergeist驱动程序,那么由于click_button是异步的,可能会出现竞争条件,这可能导致在实际发生链接点击之前不设置by_created_at参数。您可以在sleep 2
和click_button
来电之间加click_link
来测试是否存在问题