我正在努力为rspec中的存根方法扩展 NotAMock 框架,以及让存根屈服于方法块。

此Gist中的代码在我编写代码时效果很好在我自己(这完全类似于NotAMock存根方法)。

但是当我将object.instance_eval ...代码合并到NotAMock框架中时,“block_given?”总是返回错误,因此我永远无法让我的收益工作。正确添加了该方法,我可以调用stubbed方法......但它不能识别我从NotAMock存根版本传递给该方法的块。

要了解我如何将此代码合并到NotAMock框架中,请转到 my克隆NotAMock 并查看“add_hook”私有方法中的方法。

我知道这有点问...我希望找到一些指导。它一直让我疯狂。

有帮助吗?

解决方案 2

事实证明这个问题与我链接到的代码无关...... NotAMock框架正在做一些导致我的问题的额外方法重新定义。我已经将问题缩小到一个特定的代码行,并且正在研究如何解决它。

其他提示

我甚至不确定这是可能的。 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应该允许块作为参数获取和阻止。但我不知道这是否有效,或者即使它允许条件块。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top