본문 바로가기

Ruby On Rails/RSpec

Feature spec 작성방법

안녕하세요. 오늘은 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