获取模拟定义(rspec)的源位置
我寻找一种方法来检索模拟定义的源位置。例如,我希望在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
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
方法的地方。据我所知,唯一可用的源位置是实际方法定义出现的地方。