在Sinatra app使用Guard重新加载后如何运行规范?

时间:2014-09-22 21:45:25

标签: rspec sinatra capybara rack guard

使用guard-rack重新加载应用程序。它正确地重新加载应用程序,但是如何在重新加载后运行规范?

guard :rack do
  watch('Gemfile.lock')
  watch(%r{^app/(.+)\.rb$})

  callback(:reload) { `rspec spec` }
end

回调应该在应用程序更新后运行规范,但似乎没有任何事情发生。

配置:

Capybara.configure do |config|
  config.run_server = false
  config.default_driver = :poltergeist
  config.app_host = 'http://localhost:9292'
end

还使用guard-rspec:

guard :rspec, cmd: 'rspec spec' do
  watch(%r{^spec/(.+)\.rb$}) { 'spec' }
end

参考:Guard Docs

2 个答案:

答案 0 :(得分:2)

感谢安东尼,我明白了。 rspec后卫必须 来到 机架后卫:

guard :rack do
  watch('Gemfile.lock')
  watch(%r{^app/(.+)\.rb$})
end

guard :rspec, cmd: 'rspec spec' do
  watch(%r{^app/(.+)\.rb$})  { 'spec' }
  watch(%r{^spec/(.+)\.rb$}) { 'spec' }
end

答案 1 :(得分:1)

我们在工作中使用gaurd-rspec,这很棒。配置就像:

guard :rspec, cmd: 'rspec' do
  watch(%r{^spec/.+_spec\.rb$})
  watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
  watch('spec/spec_helper.rb')  { "spec" }
end