【发布时间】:2012-10-31 20:31:01
【问题描述】:
是否可以全局配置 RSpec 以对所有请求规范使用 Capybara 的(默认或自定义)JavaScript 驱动程序?我们有时会忘记在每个请求规范中手动添加js: true,这有点烦人。
【问题讨论】:
标签: ruby rspec capybara acceptance-testing
是否可以全局配置 RSpec 以对所有请求规范使用 Capybara 的(默认或自定义)JavaScript 驱动程序?我们有时会忘记在每个请求规范中手动添加js: true,这有点烦人。
【问题讨论】:
标签: ruby rspec capybara acceptance-testing
在 spec_helper.rb 中,设置如下:
config.before(:each) do
if example.metadata[:type] == :request
Capybara.current_driver = :selenium # or equivalent javascript driver you are using
else
Capybara.use_default_driver # presumed to be :rack_test
end
end
【讨论】:
对于更高版本的 capybara 和 rspec,检查 type 是否为“feature”很重要
config.before(:each) do
if [:request, :feature].include? example.metadata[:type]
Capybara.current_driver = :poltergeist # or equivalent javascript driver you are using
else
Capybara.use_default_driver # presumed to be :rack_test
end
end
或对于 RSpec 3(将 example 传递到块中)
config.before(:each) do |example|
if [:request, :feature].include? example.metadata[:type]
Capybara.current_driver = :poltergeist # or equivalent javascript driver you are using
else
Capybara.use_default_driver # presumed to be :rack_test
end
end
【讨论】:
config.before(:each) do |example| 这样写第一行以获得相同的行为。更多来自@joshua-muheim:stackoverflow.com/a/24571607/2948832
如果您想一次运行所有测试用例,请参阅此解决方案。
【讨论】: