안녕하세요. 오늘은 Feature spec 작성방법에 대해 적어보겠습니다.
1. Featrue spec 이란?
1) it provides methods to visit pages, fill in forms, click buttons, and more
2) Feature specs simulate a user opening your app in a browser and interacting with the page
3) 전 과정을 모두 거치는 통합 테스트입니다.
4) 터미널에서 보는 테스트와 웹 브라우저에서 보는 테스트 결과를 분리해서 확인할 수 있습니다.
a. capybara 모듈에 들어가 보면 reckTest와 selenium 모듈이 정의되어 있습니다.
b. ReckTest
(1) feature spec의 default 설정입니다.
(2) 브라우저에 접속하지 않고 터미널에서 테스트를 해줍니다.
# Capybara.default_driver = :selenium_chrome
- 이 설정을 주석처리 해줘야합니다.
c. selenium_chrome test
(1) selenium은 webBrowser를 자동 테스트해주는 gem입니다.
(2) chrome 브라우저에서 테스트를 하기 위해선 gem ‘webdrivers’ 가 필요합니다.
Capybara.default_driver = :selenium_chrome
- 이 설정을 주게 되면 chrome에서 자동으로 테스트를 해줍니다.
2. 작성방법
1) ajax 테스트 방법
Capybara.default_max_wait_time = 5
- 이 설정을 주게 되면 ajax 통신이 누락될 가능성이 없습니다.
- ajax 통신 경로를 직접 입력하지 않아도 전송이 가고 그 과정에서 에러 발생 시 에러를 일으킵니다.
2)
RSpec.describe "Certification_business", type: :feature do
scenario "index page" do
signin
visit '/admin/ssm/certification_business'
four_month_ago = Time.current.months_ago(4).strftime('%Y-%m-%d')
expect(find_by_id('date').value).to eq four_month_ago
end
end
- signin 후에 테스트하고 싶은 url에 접근 후 index page의 디폴트 값을 테스트하는 코드입니다. 이 과정에서 ajax, controller, router 등 모든 과정을 거쳐 테스트를 하게 되고 하나라도 잘못 설정되어 있으면 에러를 발생시킵니다. 그런데 ajax 같은 경우에는 웹 브라우저를 띄워줘야 신호가 정확하게 가는지 확실히 알 수 있습니다. 그러므로 디폴트로 Capybara.default_driver = :selenium_chrome 놓고 테스트를 진행하시기 바랍니다.
'Ruby On Rails > RSpec' 카테고리의 다른 글
| 나머지 스펙과 디버그에 대한 이야기 (0) | 2021.04.10 |
|---|---|
| model spec 작성방법 (0) | 2021.04.10 |
| Service spec 작성방법 (0) | 2021.03.20 |
| FactoryBot 작성방법 (0) | 2021.02.06 |
| helper spec (0) | 2021.02.06 |