У меня есть несколько полезных библиотек, которые используют 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 хранит регистр методов, которые он где-то смоделировал, но я могуне помню где.