之前微调rspec

时间:2011-09-28 15:26:07

标签: ruby rspec

在Rspec中,我们可以像这样设置一些全局的前/后行为:

config.before(:each) {blah...}

我可以说:

config.before(:each, :type => :model) {blah...}

让此块仅与模型测试一起运行 但这不起作用:

config.before(:each, :type => [:model, :controller]) {blah...}

我必须重复两次相同的事情,一个用于模型,一个用于控制器。有没有其他方法可以做到这一点?感谢

1 个答案:

答案 0 :(得分:6)

查看RSpec过滤器:https://www.relishapp.com/rspec/rspec-core/docs/hooks/filters

它们只匹配任意元数据,而rspec-rails会添加元数据:type => :每组测试的模型(或其他)。

所以,这个配置

config.before(:each, :type => [:model, :controller]) {blah...}

只会将测试与此元数据匹配(匹配相同的值):

describe "matching tests", :type => [:model, :controller] {blah...}

这基本上意味着您的问题的答案是否

无论如何,你可以用这样的东西轻松地DIY它:

before_controller_and_model = lambda do
  do_stuff
end

config.before(:each, :type => :model)      { before_controller_and_model.call }
config.before(:each, :type => :controller) { before_controller_and_model.call }