Erw*_*inM 11 testing rspec ruby-on-rails guard rspec2
我:js => true在我的spec文件中标记了我的规格需要selenium .我想要实现的是,后卫将始终首先运行非:js规格,并且只有当这些规格全部通过运行标记的规格时:js.
这是我目前的Guardfile:
group 'non-javascript specs' do
guard 'rspec', cmd: 'zeus rspec --color --format nested --fail-fast -t ~js', parallel: false, bundler: false, :all_on_start => false, :all_after_pass => false, :keep_failed => false do
notification :terminal_notifier
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/features/#{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/features/#{m[1]}_spec.rb" }
end
end
group 'javascript specs' do
guard 'rspec', cmd: 'zeus rspec --color --format nested --fail-fast -t js', parallel: false, bundler: false, :all_on_start => false, :all_after_pass => false, :keep_failed => false do
notification :terminal_notifier
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
watch(%r{^spec/requests/.+_spec\.rb$})
watch(%r{^spec/features/.+_spec\.rb$})
end
end
Run Code Online (Sandbox Code Playgroud)
但是,使用此配置,它将分割执行js和非js规格,但js即使非js规格失败,它也将始终运行规范.
如果第一组没有通过,我如何告诉警卫不要运行第二组?
要清除了一点东西,把这个在您的.rspec或.rspec-local文件:
--color
--format nested
--fail-fast
Run Code Online (Sandbox Code Playgroud)
group 'specs', halt_on_fail: true do
js_opts = { parallel: false, bundler: false, :all_on_start => false, :all_after_pass => false, :keep_failed => false }
guard 'rspec', js_opts.merge(cmd: 'zeus rspec -t ~js'), do
# (...)
end
guard 'rspec', js_opts.merge(cmd: 'zeus rspec -t js'), do
# (...)
end
end
Run Code Online (Sandbox Code Playgroud)
这应该按预期工作.如果没有在https://github.com/guard/guard中提交错误问题.
哦,我认为你想:all_after_pass => true在第一组中 - 因为你可能希望所有的快速测试都是绿色的,甚至在尝试慢速测试之前(除非快速测试是独立的,不太可能被打破并且太多而无法运行全部他们).
我相信解决方法是将两个组合并为一个组并&&在命令之间使用。这样,只有第一部分返回 true 时,命令的第二部分才会运行:
cmd: `zeus rspec --color --format nested --fail-fast -t ~js && zeus rspec --color --format nested --fail-fast -t js`
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请&&参阅shell 命令中“&&”的用途是什么?。
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |