[ruby-on-rails] RSpec과 Cucumber의 차이점은 무엇입니까? [닫은]

저는 6 개월간의 Rails 개발 경험이 있습니다. 인증 및 권한 부여 및 postgresql db와 함께 현재 사용중인 웹 애플리케이션을 구축했습니다.

두 번째 Rails 애플리케이션으로 이동하고 있지만 이번에는 학습 한 후에 TDD를 사용하여 개발하고 싶습니다. 확장하고 버그를 수정하는 것이 훨씬 쉽다는 것을 알았 기 때문입니다. 개발 속도는 느리지 만 장기적으로는 처리하기가 훨씬 쉽습니다.

Rspec과 Cucumber에 대해 들어 봤지만 완전히 혼란 스럽습니다.

RSpec과 Cucumber의 차이점과 용도를 알고 싶습니다.

초보자 (단독 개발자이기도 한)의 관점에서 테스트 프레임 워크가 정말로 필요한지 아는 것도 유용합니다.



답변

RSpec과 Cucumber는 모두 테스트 프레임 워크입니다. RSpec에는 기존의 단위 테스트가 포함됩니다 (즉, 애플리케이션의 나머지 부분과 격리 된 상태에서 애플리케이션의 일부 또는 클래스를 테스트하는 것을 의미합니다. 따라서 모델은 모델이 수행해야하는 작업을 수행하고 컨트롤러는 수행해야하는 작업을 수행하는 등).

RSpec과 Cucumber는 모두 수락 테스트에 사용됩니다 (귀하가 요청하는 사람에 따라 ATDD, BDD, 예제 별 사양 등으로 불림). 이는 비즈니스 사례 중심의 통합 테스트입니다. 즉, 사용자가 애플리케이션을 사용하는 방식을 시뮬레이션하고 전체 Rails 스택을 사용하므로 애플리케이션의 여러 부분이 함께 작동하는 방식의 문제는 단위 테스트가 수행하지 않는 방식으로 발견 될 수 있습니다. 찾기.

RSpec과 Cucumber의 주요 차이점은 비즈니스 가독성 요소입니다. Cucumber의 주요 장점은 사양 (기능)이 테스트 코드와 분리되어 있으므로 제품 소유자가 코드를 파헤 치지 않고도 사양을 제공하거나 검토 할 수 있다는 것입니다. 이것들은 Cucumber에서 만드는 .feature 파일입니다. RSpec에는 유사한 메커니즘이 있지만 대신 비즈니스 사양이 포함 된 Describe, Context 또는 It 블록을 사용하여 단계를 설명하고 즉시 해당 명령문을 실행하는 코드를 갖게됩니다. 이 접근 방식은 개발자가 작업하기가 조금 더 쉽지만 비 기술적 인 사람들에게는 조금 더 어렵습니다.

어느 것을 사용해야합니까? 당신이 유일한 개발자이자 제품 소유자라면, 저는 RSpec을 고수 할 것입니다. 기술적 인 사람이 이해하기 더 쉬우 며 범위를 지정하고 제어하는 ​​데 몇 가지 이점을 제공하며 테스트를 위해 RegEx를 엉망으로 만들지 않도록합니다. 단계. 클라이언트를 위해 이것을 구축하고 사양과 관련하여 실습중인 경우 수락 테스트에 Cucumber를 사용하고 단위 테스트에 RSpec을 사용하십시오.

둘의 주요 차이점을 보여주기 위해 :

오이:

#articles.feature
Given an article exists called "Testing Demonstration"
When I visit the list of articles
Then I should see an article called "Testing Demonstration"

#article_steps.rb
Given /^an article exists called "(.+)"$/ do |title|
  FactoryGirl.create(:article, title: title)
end
When /^I visit the list of articles$/ do
  visit articles_path
end
Then /^I should see an article called "(.+)"$/ do |title|
  page.should have_content title
end

Rspec

describe "Articles" do
  let(:article) { FactoryGirl.create(:article) }
  context "Index Page" do
    before { visit articles_path }
    it { page.should have_content article.title }
  end
end

블로그 시리즈는 RSpec을 사용하는 데 탁월합니다.


답변