2013-05-03 1 views
1

이 테스트 스택은 신뢰할 수 없게 작동합니다. 때로는 가드를 실행하면 guard-rspec gem을 사용하여 적절히 수행하고 변경된 파일 만 실행합니다. 적어도 테스트가 실패하면 단일 수정 된 파일로 중단됩니다.Guard가 모든 변경 사항에 대해 모든 RSpec 사양을 실행하는 이유는 무엇입니까?

하지만 테스트에 통과하면 모든 베팅이 해제됩니다. 그것은 계속 실행됩니다 모두 하나의 파일이 변경되면 테스트합니다. 크기가 큰 응용 프로그램에서는 파일을 저장할 때마다 모든 테스트가 실행되는 것을 볼 때 매우 실용적이며 실망 스럽습니다.

My Guardfile은 다음과 같습니다. RSpec 스펙을 가리키는 곳을 변경해야한다는 것을 주목하십시오. 기본적으로 사용자는 specs 디렉토리를 가지며 모든 사양이 모두 하나의 디렉토리로 뒤죽박죽이 될 것이라고 생각합니다. 나는 그런 테스트를하는 사람을 모릅니다. 따라서 포함시킬 재미없는 기본 설정입니다. specs 아래의 하위 디렉토리를 찾아야합니다.

# A sample Guardfile 
# More info at https://github.com/guard/guard#readme 

guard 'spork', :cucumber => false, :rspec_env => { 'RAILS_ENV' => 'test' } do 
    watch('config/application.rb') 
    watch('config/environment.rb') 
    watch('config/environments/test.rb') 
    watch(%r{^config/initializers/.+\.rb$}) 
    watch('Gemfile') 
    watch('Gemfile.lock') 
    watch('spec/spec_helper.rb') { :rspec } 
end 

guard 'rspec', :version => 2, :cli => "--drb" do 
    watch(%r{^spec/(.*)/(.+)_spec\.rb$}) 
    watch(%r{^lib/(.+)\.rb$})  { |m| "spec/lib/#{m[1]}_spec.rb" } 
    watch('spec/spec_helper.rb') { "spec" } 

    # Rails examples 
    watch(%r{^app/(.+)\.rb$})       { |m| "spec/#{m[1]}_spec.rb" } 
    watch(%r{^app/(.*)(\.erb|\.haml)$})     { |m| "spec/#{m[1]}#{m[2]}_spec.rb" } 
    watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] } 
    watch(%r{^spec/support/(.+)\.rb$})     { "spec" } 
    watch('config/routes.rb')       { "spec/routing" } 
    watch('app/controllers/application_controller.rb') { "spec/controllers" } 

    # Capybara features specs 
    watch(%r{^app/views/(.+)/.*\.(erb|haml)$})   { |m| "spec/features/#{m[1]}_spec.rb" } 
    watch(%r{^app/views/(.+)/.*\.(erb|haml)$})   { |m| "spec/requests/#{m[1]}_spec.rb" } 

    # Turnip features and steps 
    watch(%r{^spec/acceptance/(.+)\.feature$}) 
    watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' } 
end 

답변

2

guard-rspec gem에는 성공적인 테스트 후에 모든 테스트가 실행되는지 여부를 제어하는 ​​매개 변수가 있습니다. 기본값은 true이지만 찾고자하는 동작을 얻으려면 false로 변경할 수 있습니다.

은 참조 : 참조를 위해서 https://github.com/guard/guard-rspec

+0

나는 알고있다, 나는 그 세트가 있고 아직도 작동하지 않는다. : all_on_start => false, : all_after_pass => false, : version => 2, : cli => "--drb"do '''. – AKWF

+0

이상합니다. 보석 코드는 매우 간단하며 run_all 호출은 해당 매개 변수에 명확하게 종속되어 있습니다. 98 번 줄을 https://github.com/guard/guard-rspec/blob/master/lib/guard/rspec.rb에서 확인하십시오. Guardfile이 있다고 생각하십니까? –

+0

여기에 나와 있듯이, 'cucumber'가 있습니다 : cli => "--verbose --color --drb --format 'pretty'", : all_on_start => false, : all_after_pass => false do 및 guard 'rspec' , : version => 2, : all_on_start => false, : all_after_pass => false, : cli => '--drb --color'do 그래도 모든 테스트는 실패 후에 실행됩니다. – user1687078

1

에서 all_after_pass 옵션의 all_on_start: falseall_after_pass: false 옵션은 각 가드 블록 설정해야합니다. 마침내 광산이 같은 방식으로 행동하는 이유를 마침내 알게되었습니다.