1

오이와 Ruby on Rails에서 테스트를 작성하면서 계속이 질문을 던집니다. "X를 만들 수있는 방법"과 "X를 만들 수있는 방법"을 테스트 할 때Cucumber와 Rails로 무엇을 테스트해야합니까?

X를 만드는 방법은 사용자가 일반적으로 양식을 통해 X를 만드는 데 필요한 실제 단계를 테스트하는 것을 의미합니다. 새 페이지로 이동 한 다음 "X 작성"링크를 클릭하고 양식을 작성한 후 작성을 클릭 한 다음 X가 작성되었는지 확인하십시오.

"x를 생성 할 수 있습니다"라는 대안은 시스템, 모델 및 컨트롤러가 X를 생성 할 수 있는지 여부를 일컫습니다.

대개 이러한 시나리오를 모두 테스트합니까? 난 그냥 간신히 질문을 쓰기 시작하고 내 옆 프로젝트에 일부 답하고 같은 테스트 뭔가 (나는 그들이 가지 길이의 배경을 제거한)

When I click "Ask the seller a question" 
And I fill out the form with a question and submit the form 
Then I should see that the question has been created 
And the user that posted the job has been notified 

를 작성하거나해야할지 여부를 결정할 수 없었다 더 비슷하다

When I ask the seller a question 
Then I should see that the question has been posted 
And the user that posted the job has been notified 

차이점은 양식이나 공장을 통해 생성했는지 여부입니다. Rspec은 어디에서 작동합니까? 나는 그것이 "만들어 질 수 있습니까?"라는 테스트를해야한다고 생각합니다. 그 말은 오이를 사용해서 테스트하지 말아야한다는 말입니까?

나는 "나는 오이로 무엇을 테스트해야합니까?"라고 생각하지만 어쩌면이게 더 복잡해 지겠지만 나는 혼자 결론에 도달하는 데 어려움을 겪고 있습니다. 당신이 가지고있는 통찰력은 위대 할 것입니다.

답변

1

"내가 X를 만드는 방법"으로 설명한 접근법은 테스트를위한 사용자 관점을 취하고 있기 때문에 더 좋습니다.이 테스트는 오이가 더 자연 스럽거나 인기있는 것으로 나타났습니다.

또한이 접근법은 설명서의 관점에서 더 낫습니다. -> "예상되는 것"이 ​​아닌 무언가가 어떻게 작동하는지 설명합니다. 따라서 다과가 필요하거나 프로젝트에 새로운 개발자가있는 경우 - 당신이나 그 사람은 단지 시나리오를 읽을 수 있습니다. 나는 희망이 도움이 http://www.businesstechnologyarticles.eu/testing-the-user-perspective-with-ruby-on-rails

:

현재 사용자 관점 시험에 대해 조금 읽을 수 있습니다.

0

요즘 나는 다르게 대답 할 것입니다. Cucumber 시나리오는 '당신의 두 번째 예를 의미합니다.'와 비슷하지만, Ruby 코드, RSpec, FactoryGirl이 거의없는 단계에서 Capybara 만 사용하면됩니다. web_steps가 Cucumber에서 제거되었으므로 그러한 단계를 작성하려고합니다 :

When I click "Ask the seller a question" 
And I fill out the form with a question and submit the form 

이것은 정말 나쁜 접근입니다.

는 두 번째 예는 훨씬 더

When I ask the seller a question 
Then I should see that the question has been posted 
And the user that posted the job has been notified 

그것은 세부 사항

하지만 당신은 어떻게 할 '에 대한 모든 세부 사항을 것이다 다음 주로 카피 바라 단계를 작성해야로 이동하지 않고 일반적인 개념에 대한 자세한입니다 나는 X '를 만든다.

예 :

When(/^I ask the seller a question$/) do 
    click_link 'Ask the seller a question' 
    fill_in 'my_form', with: 'My question' 
    click_button 'Submit' 
end 

Then(/^I should see that the question has been posted$/) do 
    expect(page).to have_selector '.alert', text: 'New question has been posted.' 
    expect(page).to have_content 'Question: My question' 
end