【결합 테스트】 「정말 삭제하시겠습니까」의 confirma 대화상자에서 OK 버튼을 누르는 방법

1810 단어 RSpec루비Rails

하고 싶은 일



결합 테스트에서 삭제 링크를 밟은 후에 출현하는 confirm 대화 상자의 OK 버튼을 클릭하고 싶다!
<%= link_to "削除", post_path(post.id), method: :delete, data: { confirm: '本当に削除しますか?' }  //投稿の削除ボタン%>

↓confirm 다이얼로그↓


구현 방법


page.accept_confirm do
  //削除ボタンをクリックする記述
end

↓기술예↓
page.accept_confirm do
  all(".more")[0].hover.click_link('削除', href: post_path(@post1.id))
end

.more를 가지는 요소를 모두 취득해, 0번째의 요소에 hover를 맞추고 있습니다.
이렇게하면 삭제 버튼이 표시되고 .click_link에서 삭제 버튼 링크를 밟고 있습니다.

expect { }와의 맞는 기술



실제 결합 테스트에서는 모델의 카운트가 1 내려가는 것을 확인할 필요가 있다고 생각합니다.
아래와 같이 기술하는 것으로 잘 갔습니다.
expect{
  page.accept_confirm do
    all(".more")[0].hover.click_link('削除', href: post_path(@post1.id))
  end
  expect(page).to have_content('投稿を削除しました!')   //この記述がポイント!!
}.to change { Post.count }.by(-1)

「이 기술이 포인트」의 행의 유무로, 카운트가 1 내려가는의 검증 결과가 바뀌는 일이 있습니다.
이유는 삭제 처리가 완료되기 전에 테스트가 계속 진행될 수 있기 때문입니다.
그러므로 sleep이나 have_〇〇을 사용하여 처리가 완료될 때까지 시간을 몇 초만 벌어야 합니다.
이쪽의 기사를 참고로 했습니다.
사용할 수 있는 RSpec 입문·그 4 “어떤 브라우저 조작도 자유자재!역할인 Capybara대사전”

이상입니다!
테스트 코드에 예상 이상으로 막혀 버렸기 때문에, 기사로 했습니다.

좋은 웹페이지 즐겨찾기