Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 仅当所有元数据筛选器应用于RSpec时应用共享上下文_Ruby_Testing_Rspec_Tdd_Rspec2 - Fatal编程技术网

Ruby 仅当所有元数据筛选器应用于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 但我

使用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 "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