我搜索一种方法来检索模拟定义的源位置。例如。我想在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文件的方法。
答案 0 :(得分:1)
你很亲密。 source_location
的定义Method
由method
返回,如下所示:
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
被调用的地方。