加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何跳过特定Rspec标签的某些设置?

发布时间:2020-12-17 02:54:56 所属栏目:百科 来源:网络整理
导读:Rspec可以根据测试标签的存在轻松配置设置.例如,如果某些测试需要创建并行Universe(假设您有代码来执行此操作): # some_spec.rbdescribe "in a parallel universe",alter_spacetime: true do # whateverend# spec_helper.rbRSpec.configure do |config| con
Rspec可以根据测试标签的存在轻松配置设置.例如,如果某些测试需要创建并行Universe(假设您有代码来执行此操作):

# some_spec.rb
describe "in a parallel universe",alter_spacetime: true do
  # whatever
end

# spec_helper.rb
RSpec.configure do |config|
  config.before(:each,:alter_spacetime) do |example|
    # fancy magic here
  end
end

但我想做相反的事情:“在每次测试之前,除非你看到这个标签,否则执行以下操作……”

如何根据某些测试中是否存在标记,跳过spec_helper中的设置步骤?

解决方法

起初,你会期待类似的东西

RSpec.configure do |config|
  config.before(:each,alter_spacetime: false) do |example|
    # fancy magic here
  end
end

以这种方式工作,但事实并非如此.

但您可以访问示例,它是一个Example实例,并具有#metadata方法,该方法返回Metadata对象.您可以使用该值检查标志的值,并且特定示例上的标志将覆盖包含的描述块上的标志.

config.before(:each) do |example|
  # Note that we're not using a block param to get `example`
  unless example.metadata[:alter_spacetime] == false
    # fancy magic here
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读