나는 레일을 배웠을 때 오이로 시작해서 그것을 시험해보기 위해 몇 가지 시나리오를 수행했습니다. 아래 시나리오를 평가하고 특히 세 번째 단계 정의를 수행하는 더 좋은 방법을 알려주십시오.Rails + Cucumber : 제한된 리소스에 대한 액세스를 테스트하는 방법은 무엇입니까?
나는 devise를 사용하고있어 사용자를 상당히 커스터마이징 할 것이므로, 내가 뭔가를 변경해도 사용자가 예상대로 작동하는지 확인하고 싶습니다.
아마도이 부분은 괜찮습니다 (모든 입력 환영).
Scenario: Visitor creates an account
Given I am not authenticated
When I do everything required to create an account
Then I should have access to it
처음 두 단계도 괜찮을 수 있습니다.
Given /^I am not authenticated$/ do
visit destroy_user_session_path
end
When /^I do everything required to create an account$/ do
email = '[email protected]'
name = 'asdf'
password = 'asdf'
visit new_user_registration_path
fill_in 'user_email', :with => email
fill_in 'user_name', :with => name
fill_in 'user_password', :with => password
fill_in 'user_password_confirmation', :with => password
click_on('Sign up')
end
하지만 제 3자가 나를 잡아줍니다. 나는 헤더에서 200 개의 성공을 얻었는지 또는 사용자가 액세스 권한이 있는지 여부를 확인하는 근본적인 방법으로 권한이없는 401을 테스트하려고 생각했습니다. 그러나 나는 그것을 할 길을 찾을 수 없었습니다. 내가 올바른 생각을 가지고 있다면, 그것을 할 수있는 코드는 무엇입니까? 내가 틀린 생각을 가지고 있다면, 왜 그런가? 그리고 그것을하는 더 좋은 방법은 무엇인가?
Then /^I should have access to it$/ do
visit edit_user_registration_path
page.should have_selector "something that only exists on the edit registration page" #works but seems very brittle
# my failed attempt at using rspec inside the step definition:
# get edit_user_registration_path
# response.headers["Status"].downcase.should == "200 success"
#
# another failed attempt:
# response.should render_template(...)
# end
end
다른 답변을 통해이 사실을 알았습니까? :) 대답 해줘서 고마워! 나는 그 스타일을 사용하는 것을 보았지만, 그것은 불필요하게 워크 플로우/UI에 결합 된 것으로 보인다. 나는 그것들을위한 별도의 사양을 가지고있다. 나는 그것이 표준이 아니라고 생각하지만, 내가 생각하는 방식에 맞아서 시도하고있다. 나는 [이 줄] (http://ruby.11.n6.nabble.com/How-do-I-include-routing-path-helpers-td3484906.html)에서 더 많은 것을 생각하고 있었다. 사양/라우팅 외부에 배치하십시오. 내가 성취하고자하는 것은 그 동작이 인터페이스 (HTML/JSON/etc)와 독립적으로 작동하는지 테스트하는 것입니다. – KobeJohn
아, 책 고마워. 나는 BDD를 위해 오이를 사용하는 것을 보지 못했다. 오이 스타일로 재미있게 일하고 있습니다. 구현을 원하는 동작과 분리하려고 시도하는 것이 좋습니다. [예제를 통한 사양] (http://www.amazon.com/Specification-Example-Successful-Deliver-Software/dp/1617290084/ref=pd_bxgy_b_img_b)은 훌륭한 책으로 시작되었습니다. – KobeJohn