gpt4 book ai didi

ruby-on-rails - Rspec.config 之前(:each) except for specific :types

转载 作者:数据小太阳 更新时间:2023-10-29 06:43:20 27 4
gpt4 key购买 nike

我正在尝试获取一个before(:each) block 以针对所有规范except type::feature 运行。

我让它工作的唯一方法是剪切和粘贴,并为每种类型设置单独的配置 block 。 (:type => :model, :type => :service 等)

spec/rails_helper.rb

# To speed up tests, stub all Paperclip saving and reading to/from S3
config.before(:each, :type => :model) do
allow_any_instance_of(Paperclip::Attachment).to receive(:save).and_return(true)
end

是否有更 DRY 的方法?

最佳答案

你传递给你的前 block 的是一个'conditions hash '. RSpec 只会将 before 应用于那些符合这些条件的示例或上下文。

散列相当灵活,您可以直接执行诸如 type::model 之类的操作,但您可以使用任意名称查询任何类型的元数据。

filter run excluding 为例

  :foo => 'bar'
:foo => /^ba/
:foo => lambda {|v| v == 'bar'}
:foo => lambda {|v,m| m[:foo] == 'bar'}

:foo 可以是任何东西,例如,类型。但它为您提供了很大的灵 active ,尤其是使用 lambda 语法可以非常具体地说明您希望在什么情况下运行您的规范。

在你的情况下你可以这样做:

config.before(:each, :type => lambda {|v| v != :feature}) do
allow_any_instance_of(Paperclip::Attachment).to receive(:save).and_return(true)
end

关于ruby-on-rails - Rspec.config 之前(:each) except for specific :types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32655446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com