当前位置:  开发笔记 > 编程语言 > 正文

rspec:如何存根构造函数调用的实例方法?

如何解决《rspec:如何存根构造函数调用的实例方法?》经验,为你挑选了4个好方法。

这是将功能添加到rspec的提交 - 这是在2008年5月25日.你可以这样做

A.any_instance.stub(do_something: 23)

但是,rspec的最新宝石版本(1.1.11,2008年10月)中没有此补丁.

该票证明由于维护原因他们将其拉出,并且尚未提供替代解决方案.

看起来你不能在这一点上做到这一点.您将不得不使用alias_method或其他人手动破解该类.



1> Orion Edward..:

这是将功能添加到rspec的提交 - 这是在2008年5月25日.你可以这样做

A.any_instance.stub(do_something: 23)

但是,rspec的最新宝石版本(1.1.11,2008年10月)中没有此补丁.

该票证明由于维护原因他们将其拉出,并且尚未提供替代解决方案.

看起来你不能在这一点上做到这一点.您将不得不使用alias_method或其他人手动破解该类.


看来它已经带回2.6.0所以它现在在那里......
@rogerdpack:的确,终于来了!http://blog.davidchelimsky.net/2011/05/12/rspec-260-is-released/"添加对any_instance.stub和any_instance.should_receive的支持"

2> Denis Barush..:

我在http://pivotallabs.com/introducing-rr/上找到了这个解决方案

new_method = A.method(:new)

A.stub!(:new).and_return do |*args|
  a = new_method.call(*args)
  a.should_receive(:do_something).and_return(23)
  a
end



3> Dustin..:

我不知道如何在spec的模拟框架中执行此操作,但您可以轻松地将其替换为mocha来执行以下操作:

# should probably be in spec/spec_helper.rb
Spec::Runner.configure do |config|
  config.mock_with :mocha
end

describe A, " when initialized" do
  it "should set x to 42" do
    A.new.x.should == 42
  end
end

describe A, " when do_something is mocked" do
  it "should set x to 23" do
    A.any_instance.expects(:do_something).returns(23)
    A.new.x.should == 23
  end
end



4> Chris Lloyd..:

或与RR:

stub.any_instance_of(A).do_something { 23 }

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有