在Rspec中,我们可以设置一些全局的前/后行为,如下所示:
config.before(:each) {blah...}
Run Code Online (Sandbox Code Playgroud)
我可以说:
config.before(:each, :type => :model) {blah...}
Run Code Online (Sandbox Code Playgroud)
让这个块只运行模型测试但这不起作用:
config.before(:each, :type => [:model, :controller]) {blah...}
Run Code Online (Sandbox Code Playgroud)
我必须重复两次相同的事情,一个用于模型,一个用于控制器.有没有其他方法可以做到这一点?谢谢
查看RSpec过滤器:https://www.relishapp.com/rspec/rspec-core/docs/hooks/filters
它们只匹配任意元数据,并且rspec-rails为每组测试添加元数据:type =>:model(或其他).
所以,这个配置
config.before(:each, :type => [:model, :controller]) {blah...}
Run Code Online (Sandbox Code Playgroud)
只会将测试与此元数据匹配(匹配相同的值):
describe "matching tests", :type => [:model, :controller] {blah...}
Run Code Online (Sandbox Code Playgroud)
这基本上意味着你的问题的答案是否定的.
无论如何,你可以用这样的东西轻松地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 }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |