为了验证我的布局可以在不同的屏幕尺寸上工作,我的验收测试实际上是这样的:
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在我的spec helper中,我将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这只起到了部分作用。该示例针对每个已定义的设备运行,但窗口根本不会调整大小。
有谁能给我个提示吗?
发布于 2013-11-28 19:34:49
我找到了一个解决方法来归档所需的行为:
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
endhttps://stackoverflow.com/questions/20264335
复制相似问题