在我的Gemfile中......
group :development, :test do
gem 'capybara', "1.1.2"
gem 'database_cleaner', "0.7.0"
gem 'cucumber', "1.1.2"
gem 'cucumber-rails', "1.2.0"
gem 'rspec-rails', "2.7.0"
gem 'spork', "0.9.0.rc9"
gem 'launchy' #launches the page
gem 'guard-spork', "0.3.1"
gem 'guard-rspec', "0.5.4"
gem 'guard-cucumber', "0.7.4"
gem 'factory_girl_rails'
end
My Guardfile有两个组(:specs和:features)。
group :specs do
guard :spork, :rspec_env => { 'RAILS_ENV' => 'test' } do
watch('config/application.rb')
watch('config/environment.rb')
watch(%r{^config/environments/.+\.rb$})
watch(%r{^config/initializers/.+\.rb$})
watch('spec/spec_helper.rb')
end
guard :rspec, :version => 2 do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }
# # Rails example
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_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('spec/spec_helper.rb') { "spec" }
watch('config/routes.rb') { "spec/routing" }
watch('app/controllers/application_controller.rb') { "spec/controllers" }
# Capybara request specs
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
end
end
group :features do
guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'test' } do
watch('config/application.rb')
watch('config/environment.rb')
watch(%r{^config/environments/.+\.rb$})
watch(%r{^config/initializers/.+\.rb$})
watch('spec/spec_helper.rb')
end
guard 'cucumber' do
watch(%r{^features/.+\.feature$})
watch(%r{^features/support/.+$}) { 'features' }
watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
end
end
当我尝试运行:specs组时,我希望后卫只能为Rspec运行Spork。
guard -g specs start
然而,我可以从输出中看到,后卫为Rspec和Cucumber运行Spork。
~/current[master]% guard -g specs start
WARNING: You are using Guard outside of Bundler, this is dangerous and may not work. Using `bundle exec guard` is safer.
Guard could not detect any of the supported notification libraries.
Guard is now watching at '/Users/rupert/Desktop/cws-rails'
Starting Spork for RSpec & Cucumber
Using RSpec
Using Cucumber
Preloading Rails environment
Preloading Rails environment
Loading Spork.prefork block...
Loading Spork.prefork block...
Spork is ready and listening on 8990!
Spork is ready and listening on 8989!
Spork server for RSpec & Cucumber successfully started
Guard::RSpec is running, with RSpec 2!
Running all specs
我可能错过了SPORK或后卫的配置文件吗?
更新:
删除护卫黄
删除或重命名要素文件夹
答案 0 :(得分:6)
您必须在RSpec组中禁用Spork中的Cucumber,反之亦然:
specs :specs
guard :spork, :cucumber => false do
# ...
end
end
specs :features
guard 'spork', :rspec => false do
# ...
end
end
答案 1 :(得分:0)
我知道它已经过时了,但我现在也偶然发现了这个问题并弄清楚了:
我的项目中有一个features
子目录,其中包含一个文件:
features/step_definitions/email_steps.rb
查看提交我意识到这是从rails_apps_composer:测试框架中添加的。
所以:
删除子目录features
会阻止spork
尝试使用黄瓜。