获取模拟定义(rspec)的源位置

获取模拟定义(rspec)的源位置,rspec,mocking,Rspec,Mocking,我寻找一种方法来检索模拟定义的源位置。例如,我希望在rspec中有类似的内容: describe "mocking AnyObj" do before(:each) do @x = Object.new @x.stub(:fkt) end it "should return source location of @x.stub(:fkt)" do @x.method(:fkt).source_location[1].should == 4 end en

我寻找一种方法来检索模拟定义的源位置。例如,我希望在rspec中有类似的内容:

describe "mocking AnyObj" do
  before(:each) do
    @x = Object.new
    @x.stub(:fkt)
  end

  it "should return source location of @x.stub(:fkt)" do
     @x.method(:fkt).source_location[1].should == 4
  end
end

这样做的原因是为了提供一种调试rspec文件的方法。

您已经接近了<代码>源位置是为
方法
定义的,该方法由
方法
返回,如下所示:

describe "mocking AnyObj" do
  before(:each) do
    @x = Object.new
    @x.stub(:fkt)
  end

  it "should show source location" do
     @x.method(:fkt).source_location[1].should == 4
  end
end
注意,您还有
x.stub(:fkt)
,而不是
@x.stub(:fkt)


最后,请注意,您将从
method_double.rb
文件(至少在我检查的RSpec版本中)获得一个行号,该行号显示实际存根定义发生的行号(例如
def fkt….
或类似的类求值)。无法引用测试中调用
stub
的地方的行。

谢谢,这样更接近了。我认为我无法通过方法_double.rb创建存根的方式轻松获得源位置。您要查找的源位置是什么?带有@x.stub(:fkt)的行。但这不是定义mock的地方。这就是从规范中调用RSpec中的
stub
方法的地方。据我所知,唯一可用的源位置是实际方法定义出现的地方。