我想寫一個AJAX調用測試。該功能適用於生產,但我在Capybara遇到麻煩。似乎find(".selector").click
不能在同一場景中調用兩次。水豚沒有找到相同的鏈接兩次使用發現
方案1次傳球,但場景#2給出了第二find(".article__expand").click
這個錯誤:
Failure/Error: find(".article__expand").click
Capybara::ElementNotFound:
Unable to find css ".article__expand"
我使用一個CSS選擇器,因爲鏈接的身體是一個glyphicon跨度。有沒有解決的辦法?
require "rails_helper"
RSpec.feature "Users can toggle article descriptions" do
let(:article) { FactoryGirl.create(:article, description: "Article description") }
context "all users" do
before do
visit article_path(article)
end
scenario "description is hidden until clicked" do
expect(page).to_not have_content("Article description")
find(".article__expand").click
expect(page).to have_content("Article description")
end
scenario "description can be toggled" do
expect(page).to_not have_content("Article description")
find(".article__expand").click
expect(page).to have_content("Article description")
find(".article__expand").click
expect(page).to_not have_content("Article description")
end
end
end
這裏的電話是怎麼回事。我在resources :articles
上使用自定義的description
獲得成員。
# views/articles/_article.html.erb
<div class="article" id="article-<%= article.id %>">
<%= link_to description_article_path(article), remote: true, class: "article__expand" do %>
<span class="glyphicon glyphicon-plus"></span>
<% end %>
<div class="article__info">
</div>
</div>
# views/articles/description.js.erb
$(function() {
if ($("#article-<%= @article.id %> .article__description").length) {
$("#article-<%= @article.id %> .article__description").toggle();
} else {
$.getJSON('/articles/<%= @article.id %>.json', function(data) {
var description = ('<p class="article__description">' + data.description + '</p>')
$('#article-<%= @article.id %> .article__info').prepend(description);
});
}
});
我只是猜測,因爲在這裏我不是CSS專家。但是,如果單擊「.article_expand」,它將被擴展,並且該類應該更改爲「.article_minimize」之類的內容。你有沒有實現任何這樣的功能? – bork
@bork沒有這樣的,我會在視圖中編輯。他們非常簡單,所以我認爲這是一個水豚問題,但我可能是錯的。 – Jane
你正在使用哪種水豚? –