当前位置:  开发笔记 > 后端 > 正文

除了一个之外的所有测试之前(:每个)

如何解决《除了一个之外的所有测试之前(:每个)》经验,为你挑选了1个好方法。

这是我的一部分spec_helper.rb:

RSpec.configure do |config|

 config.before(:each) do
  login(email, password)
  visit root_url
 end

end

我需要的所有(20+)测试除了一个.

有没有办法避免单个测试执行before hook



1> 小智..:

您可以向不需要登录的测试添加元数据,然后在before钩子中评估该元数据.

例如,在同一文件中进行两次测试.一个需要登录,一个不需要.

# foo_spec.rb
describe Foo do
  describe "#bar" do
    it "needs to log in" do
      expect(1).to eq 1
    end
  end
  describe "#baz" do
    it "needs to not log in", :logged_out do
      expect(1).to eq 1
    end
  end
end

所以我们在it块中添加了元数据.接下来,我们配置before钩子来评估示例的元数据.

config.before(:each) do |test|
  login(email, password) unless test.metadata[:logged_out]
  visit root_url
end

现在,每个测试都会,visit root_url但只有未标记的测试:logged_out才会调用login.

RSpec调用这些基于元数据的钩子过滤器.您可以在这里了解更多相关信息.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有