RSpec Capybara 링크 이미지 테스트 (system spec)
9574 단어 RSpecRubyOnRails5.2
⭐️상황
· 자신이 만든 포트폴리오에 system spec을 작성하고 있습니다.
· FactoryBot 사용
· 게시물을 게시 한 사용자의 프로필 이미지가 사용자 페이지로 전환하는 링크입니다.
· 테스트에서 ↑를 증명하고 싶습니다.
· 프로필 이미지 (Refile 사용 avatar_id) 오류 늪에서 빠져 나올 수 없습니다.
참고까지 설정 화상
spec/factories/users.rb
FactoryBot.define do
factory :user do
name {"name_1"}
avatar{"Rack::Test::UploadedFile.new(File.join(Rails.root,'app/assets/images/no_image.png'))"}
sequence(:account_name, "account_1")
sequence(:email, "[email protected]")
password {"testchan"}
end
spec/system/posts_spec.rb
context "画面遷移の確認" do
it "ユーザー名をクリックするとプロフィール画面へ遷移する" do
click_link post.user.name
visit user_path(user)
expect(page).to have_content "こだわりさん information"
end
it "ユーザー画像をクリックするとプロフィール画面へ遷移する" do
click_link post.user.avatar
visit user_path(user)
expect(page).to have_content "こだわりさん information"
end
views
<%= attachment_image_tag(post, :image, size: "50x50", fallback: "no_postimage.jpg") %>
<p><%= link_to post.content.truncate(45), post_path(post), style: "color: black;" %></p>
<p>
<%= link_to user_path(post.user) do %>
<%= attachment_image_tag(post.user, :avatar, size: "30x30", class:"rounded-circle", fallback: "no_image.png") %><br>
<span class="postuser" style="color:black;"><%= post.user.name %></span>
<% end %>
<span class="fas fa-comments">
<%= post.post_comments.count %>
</span>
<span class="fas fa-hiking" style="color: #FF66CC;">
<%= post.bravos.count %>
</span>
</p>
<p><%= link_to "View Detail", post_path(post), class:"view-btn btn btn-light btn-lg btn-block" %></p>
테스트 결과
Ambiguous match, found 21 elements matching visible link nil
다중 요소 발견되었지만 링크가 없습니다. . .
이제 몇 시간 격투 끝에 Rspec에서 사용하는 Capybara 공식 문서에 이렇게 기술되었습니다.
이 내용은 teamcapybara/capybara에서 다음과 같이 설명됩니다.
> Clicking links and buttons
Full reference: Capybara::Node::Actions
You can interact with the webapp by following links and buttons.
Capybara automatically follows any redirects, and submits forms associated with buttons.
click_link('id-of-link')
click_link('Link Text')
click_button('Save')
click_on('Link Text') # clicks on either links or buttons
click_on('Button Value')
유저 네임을 클릭해 유저 페이지에 천이 하는 테스트가 통과하고 있던 것은 “문자열”이었기 때문에.
클릭 링크는 이미지에 사용할 수 없었다는 것이 었습니다.
그래서 테스트와 view의 일부 다음과 같이 수정했습니다.
spec/system/posts_spec.rb
it "ユーザー画像をクリックするとプロフィール画面へ遷移する" do
click_link "#{post.user.name}さんのプロフィール画像"
visit user_path(user)
expect(page).to have_content "こだわりさん information"
end
views
<%= link_to user_path(post.user) do %>
<%= attachment_image_tag(post.user, :avatar, size: "30x30", class:"rounded-circle", fallback: "no_image.png", :alt => "#{post.user.name}さんのプロフィール画像")) %><br>
<span class="postuser" style="color:black;"><%= post.user.name %></span>
<% end %>
무사히 테스트가 통과되었습니다
요약
클릭 링크가 이미지에 사용할 수 없었습니다.
거기서 alt 속성을 이미지에 갖게 해 click_link “alt 속성”으로 해결.
Alt 속성은 이미지를 읽지 못하면 텍스트로 이미지를 표시합니다.
원래 화상 표시시킬 때는 반드시 alt 속성을 붙이는 편이 좋은 것 같습니다.
보충
Capybara 공식 문서에도 있지만,
Click_link뿐만 아니라 click_on에서 시도한 것처럼 테스트를 통과했습니다.
참고
뭔가 지적해 주시면 부탁드립니다!
봐 주셔서 감사합니다.
Reference
이 문제에 관하여(RSpec Capybara 링크 이미지 테스트 (system spec)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/N-Moriya/items/472d59f1dd51974a6359텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)