为验证我的布局适用于不同的屏幕尺寸,我的验收测试实际上是这样的:
require "spec_helper"
[:small, :medium, :large].each do |size|
feature "Some feature", js: true, screen_size: size do
scenario "Some scenario" do
# ...
end
end
end
在我的规范助手中,我将rspec配置为使用before(:each)
块来调整浏览器窗口的大小。
RSpec.configure do |config|
config.before(:each) do
if example.metadata[:js]
if example.metadata[:screen_size]
resize_browser_window(example.metadata[:screen_size])
else
resize_browser_window(:large)
end
end
end
我真正想做的是这样的事情:
require "spec_helper"
feature "Some feature", js: true, devices: [:small, :medium, :large] do
scenario "Some scenario" do
# ...
end
end
然后使用around(:each)
块为每个屏幕大小运行方案:
RSpec.configure do |config|
config.around(:each) do |example|
if example.metadata[:devices]
example.metadata[:devices].each do |size|
resize_browser_window(size)
example.run
end
end
end
end
这部分起作用。该示例针对每个已定义的设备运行,但窗口根本不会调整大小。
有人对我有暗示吗?
答案 0 :(得分:1)
我找到了一种解决方法来存档所需的行为:
RSpec.configure do |config|
config.around(:each) do |example|
if example.metadata[:devices]
example.metadata[:devices].each do |size|
example.metadata[:screen_size] = size
example.run
end
end
end
config.before(:each) do
if example.metadata[:js]
if example.metadata[:screen_size]
resize_browser_window(example.metadata[:screen_size])
end
end
end
end