我正在努力在rspec中扩展存根方法的NotAMock框架,并将存根转换为方法块。
code in this Gist在我自己编写代码时完美运行(这与NotAMock存根方法类似)。
但是当我将object.instance_eval ...代码合并到NotAMock框架中时,“block_given?”总是返回错误,因此我永远无法让我的收益工作。正确添加了该方法,我可以调用stubbed方法......但它不能识别我从NotAMock存根版本传递给该方法的块。
要了解我如何将此代码合并到NotAMock框架中,请转到my clone of NotAMock并查看私有方法中的“add_hook”方法。
我知道这有点问...我希望找到一些指导。它一直让我疯狂。
答案 0 :(得分:2)
我甚至不确定这是可能的。 New Procs甚至不识别块。
proc = Proc.new do
if block_given?
yield
else
puts "Not in a block"
end
end
proc.call { puts "In a block"} # => puts Not in a block
Ruby 1.9应该允许块作为参数获取和阻止。但我不知道这是否有效,或者即使它允许条件块。
答案 1 :(得分:0)
事实证明这个问题与我链接到的代码无关...... NotAMock框架正在做一些导致我的问题的额外方法重新定义。我已经将问题缩小到一个特定的代码行,并且正在研究如何解决它。