我在测试下面有以下代码:
class MethodCache
@@methods=Hash.new
def self.add_method(name, &block)
@@methods[name]=block
end
def self.get_method(name)
@@methods[name]
end
end
现在我的规范看起来像这样:
describe MethodCache do
subject {MethodCache}
foo_block = ->{ puts "foo"}
it ".get_method" do
subject.add_method "foo", &foo_block
# does not work
# expect(subject.get_method("foo").to be &foo_block
# should syntax works
subject.get_method("foo").should be foo_block
end
end
我正试图远离should
语法并使用RSpec的expect
语法。但是在这种情况下它不起作用。
expect(subject.get_method("foo").to be &foo_block
未能说wrong number of arguments
。我想这是因为期望块被视为块参数。
expect(subject.get_method("foo").to be foo_block
(没有'&')也不起作用。它说,匹配者期望一个价值而不是争论。
我在这里缺少什么?