我正在使用帖子和喜欢创建rails应用程序。
feature "Create like" do
include_context "user signed in"
def have_updated_likes_count
new_likes_count = bonus.likes_count
have_content("Likes #{new_likes_count}")
end
let!(:bonus) { create(:bonus) }
let(:decorated_bonus) { bonus.decorate }
before { visit root_path }
scenario "User likes bonus", js: true do
find(".like").click
expect(bonus).to have_updated_likes_count
expect(page).to have_content(current_user.full_name)
end
end
奖金=发布。正如你在这里看到的,我检查用户是否喜欢奖金。但是在这个root_path(主页)中我有很多帖子(20),每个帖子都喜欢。我的测试尝试检查expect(bonuses).to have_updated_likes_count
和expect(page).to have_content(current_user.full_name)
并且它始终都是正确的,因为它检查整页,但我只需要检查一个帖子(我在哪里find(".like").click
)。我怎样才能解决我的问题?
答案 0 :(得分:0)
这取决于您的网页结构,但通常您希望使用within
将操作范围限定为特定元素。
page.within('selector that finds the post element') do
find(".like").click
expect(bonus).to have_updated_likes_content # issues
expect(page).to have_content(current_user.full_name) # issues
end
这回答了你的问题,但是测试的其余部分也有一些你需要解决的问题。