gpt4 book ai didi

ruby-on-rails - 有没有办法配置守卫不运行请求规范?

转载 作者:行者123 更新时间:2023-12-04 17:11:55 25 4
gpt4 key购买 nike

我正在使用守卫来运行我所有的 Rails 规范,它很棒。我写了一堆请求规范,它们使用 capybara 和 Selenium 通过打开 Firefox 来测试我的页面 javascript,它们也很棒,但是它们往往很慢,并且在我打字时将焦点从我的编辑器上移开。

有没有办法将guard配置为在全部运行时不运行我的请求规范,并且可能分配一个热键来仅运行请求规范?

最佳答案

回答我自己的问题,以防其他人遇到这个问题:

rspec-rails 可以通过 :cli 将命令行参数传递给 rspec。此外,可以在规范文件中标记示例,然后可以运行 rspec 以包含或排除那些标记的示例。

结果我已经用 :js=>true 标记了我想排除的例子,这就是你如何让 Selenium 启动 firefox。

describe "Post" do
it "should be able to edit a post", :js=>true do
# your test here
end
end

我在我的 Guardfile 中创建了两组,一组用于非 JavaScript 规范,使用 :cli => "-t ~js",另一组用于使用 :cli => "-t js"测试 javascript 的规范。我还为 javascript 组传递了 :all_after_pass => false 。

这是我的新 guard 文件:
group 'none-javascript specs' do
guard 'rspec', :version => 2, :cli => '-r rspec/instafail -f RSpec::Instafail -t ~js' 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{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^app/(.*)(\.erb|\.haml|\.jbuilder)$}) { |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" }

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

group 'javascript specs' do
guard 'rspec', :version => 2, :all_after_pass => false, :cli => '-r rspec/instafail -f RSpec::Instafail -t js' do

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

现在,当我启动守卫或在守卫术语中按回车时,两个组都在执行所有规范。
Guard::RSpec is running, with RSpec 2!
Running all specs
Run options: exclude {:js=>true}
...
Finished in 75.78 seconds
428 examples, 0 failures, 1 pending

Guard::RSpec is running, with RSpec 2!
Running all specs
Run options: include {:js=>true}
...
Finished in 63.68 seconds
22 examples, 0 failures

毕竟测试通过只运行非javascript示例。

关于ruby-on-rails - 有没有办法配置守卫不运行请求规范?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9445988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com