2011-01-06 1 views
25

Rspec 2를 테스트 라이브러리로 사용하는 최근의 오픈 소스 애플리케이션을 찾고 있습니다. 경험있는 개발자가 라이브러리를 제대로 활용하여 전체 스택을 테스트하는 방법을보고 싶습니다. 필자는 내 자신의 지식에 대해 끊임없이 의심 스럽기 때문에 (testunit에서 비롯된 것이었고 최신 Rspec 릴리스에 대한 약간의 설명서 때문이었습니다. 지속적으로 개선 되더라도).레일 : 좋은 Rspec2 예제 사용법? (Also : Cucumber, Pickle, Capybara)

프로젝트가 오이, 피클 및/또는 카피 바라뿐만 아니라 Rspec 2와 함께 사용하면 기꺼이 저를 뛰어 넘게 할 수 있습니다.

모든 포인터?

건배!

답변

53

내 2 센트 :

사용 스테이크 대신 오이의. 그것은 RSpec의 핵심이며, 간단하고 일을합니다.

https://github.com/cavalle/steak

카피 바라가 서로 다른 드라이버를 사용 할 수 있습니다. 일부 드라이버는 스윙 어를 사용하여 테스트 사양에 가장 적합한 드라이버를 사용하는 등 빠른 브라우저 실행 속도가 느린, 자바 스크립트를 지원

https://github.com/jeffkreeftmeijer/swinger

내가 Akephalos 내 자신의 포크를 사용 - 드라이버를 -하는 빨리, 지원 자바 스크립트, UTF-8 (내 포크가 추가하는 것)이며 외부 브라우저가 필요하지 않습니다.

https://github.com/Nerian/akephalos2

RSpec에 대한 좋은 방법은 '문맥'을 사용하는 것입니다. 설명이 필요한지 저에게 물어보십시오. 또한 을 참고하여 메소드를 사용하십시오. 블록 반환 값을 반환합니다. Mock 객체를 안에 선언하고 샘플에서 사용하는 것이 유용합니다. . 또한

feature "Course" do 

    let(:school) {School.make!} 

    context "Loged in" do 
    before(:each) do 
     switch_to_subdomain(school) 
    end 

    context "In the new course form" do 
     before(:each) do 
     click_link("Courses") 
     click_link("New course") 
     end 

     scenario "New course" do    
     end 

     scenario "A Course without name should not be accepted" do 
     end 

     scenario "A new course should not be created if there is another one with the same name in the same school" do 
     end 
    end 
    end 
end 

는 책 : The RSpec에 도서, 실용적인 프로그래머의는 RSpec에, 카피 바라, 오이 뒤에 핵심 개념이 모든 행동 기반 개발 민첩 일 :

에 대해 자신을 시작하기위한 아주 좋은 자원이다

편집 :

또한 Machinist2를 사용하여 조명기를 사용합니다. https://github.com/notahat/machinist

훌륭한 작품입니다. 공장 소녀보다.

Fabricator도 있습니다. Fabricator는 우수한 웹 사이트와 매우 유용한 DSL을 가지고 있습니다.

https://github.com/paulelliott/fabrication

당신은 지능적인 데이터를 생성하기 위해 위조와 기계공을 사용할 수 있습니다.

https://github.com/sevenwire/forgery

School.blueprint do 
    name { "Pablo de olavide"} 
end 

Student.blueprint do 
    first_name { Forgery::Name.first_name} 
    last_name { Forgery::Name.last_name } 
    school { School.make! } 
end 

당신은 최종 사용자가 볼 것처럼 응용 프로그램을보고, 당신이 개발 데이터베이스를 채우는하기 위해 토르 작업과이 결합 할 수 있습니다.또한

http://relishapp.com/rspec

,이 게시물은 다른 많은 팁 제공 :

http://eggsonbread.com/2010/03/28/my-rspec-best-practices-and-tips/

아주 좋은 조언 또 다른 게시물을

def populate   
    require File.expand_path('config/environment.rb') 
    require File.expand_path('spec/support/blueprints.rb')   
    drop 
    puts "populating database" 
    1.times do |num| 
     school = School.make! 
     50.times do 
     Student.make!(:school => school) 

     end            
    5.times do   
     Course.make!(:school => school)   
     Professor.make!(:school => school)     
     end    
    end 
end 

RSpec에 2의 문서는 많은 예제가 있습니다 :

http://flux88.com/2011/05/dry-up-your-rspec-files-with-subject-let-blocks/

테스트의 실행 시간을 최적화 :

http://blog.leshill.org/blog/2011/10/23/fast-specs.html

http://jeffkreeftmeijer.com/2011/spec-helpers-bundler-setup-faster-rails-test-suites/

+0

덕분에 입력 잔뜩! 나는 현재 팩토리 걸 (Factory Girl)을 사용하고 있지만 가까운 장래에 기계 공작 기계를 시험해 볼 수 있다고 생각합니다. – polarblau

+0

... 나는 스테이크에 대해 읽었으며 확실히 내 자신의 "스타일"(hä?)에 가까워 보이지만 한 번의 전체 프로젝트에서 오이를 사용하여 더 좋은 인상을 남기고 싶습니다. 나는 RSpec 책을 사는 것에 대해서도 생각했다. 힌트를 주셔서 감사 드리며, 나는 그 때 그냥 갈 수도 있다고 생각한다. 그리고 나는 확실히 "문맥"을 시도 할 것입니다. 다시 한번 감사드립니다. - 그럼에도 불구하고 공개 프로젝트가있는 사람이라면 누구나 들여다 볼 수 있습니까? – polarblau

+1

당신은 RSpec2 specs가 주인에 의해 행해지는 것을 볼 수있는 정말 좋은 곳이 RSpec2 git 저장소 그 자체입니다 :) 오이 : https://github.com/dchelimsky/rspec/tree/master/features와 RSpec; https://github.com/dchelimsky/rspec/tree/master/spec – Nerian