Ruby 仅当所有元数据筛选器应用于RSpec时应用共享上下文
使用RSpec,如果我定义共享上下文如下:Ruby 仅当所有元数据筛选器应用于RSpec时应用共享上下文,ruby,testing,rspec,tdd,rspec2,Ruby,Testing,Rspec,Tdd,Rspec2,使用RSpec,如果我定义共享上下文如下: shared_context :a => :b, :c => :d do # ... end 如果元数据[:a]==:b或元数据[:c]==:d,它将附加到示例组只有在两个条件都适用的情况下,才有推荐的附加上下文的方法吗? 至于现在,我求助于将过滤器更改为: shared_context :a => proc { |v, m| v == :b && m[:c] == :d } do # ... end 但我
shared_context :a => :b, :c => :d do
# ...
end
如果元数据[:a]==:b
或元数据[:c]==:d
,它将附加到示例组只有在两个条件都适用的情况下,才有推荐的附加上下文的方法吗?
至于现在,我求助于将过滤器更改为:
shared_context :a => proc { |v, m| v == :b && m[:c] == :d } do
# ...
end
但我无法想象这是一种正确的方法。元数据组件是经过设计的,并且没有一流的方法来处理您正在做的事情,所以这和任何方法一样好
如果您对我们如何强制所有元数据匹配有一些想法,请在提交功能请求,我们可以讨论它。我从
shared_context "freeze time", workday: true, time: "19:00" do
...
end
但在这种情况下,我重写了代码,使用单一元数据,如
shared_context "freeze Time at workday after 18:00", workday_time: "19:00" do
before{
hours,minutes = "19:00".split(':')
Timecop.freeze(Time.local(2013,04,01,hours.to_i,minutes.to_i))
}
after{ Timecop.return }
end
shared_context "freeze Time at weekend before 18:00", weekend_time: "10:30" do
before{
hours,minutes = "10:30".split(':')
Timecop.freeze(Time.local(2013,04,06,hours.to_i,minutes.to_i))
}
after{ Timecop.return }
end