我有一些有用的库,它们利用Method#source_location
告诉我方法的定义位置。
@account.puts_location(:transactions)
# => STDOUT
/path/to/calling_file.rb:60:in `calling_method'
#<Method: Account#transactions> <= /path/to/app/models/account.rb:218
# (it then goes on to call the method)
这一切都很好,但是如果我在RSpec中模拟了一个方法(我使用的是3.6),我会得到一些RSpec代码的位置:
/path/to/app/models/account.rb:221:in `block in transactions'
#<Method: RemoteClient.transactions> <= /path/to/gems/rspec-mocks-3.6.0/lib/rspec/mocks/method_double.rb:63
有没有办法
我似乎记得RSpec在某个地方保存了它模拟的方法的记录,但是我不记得在哪里。