Я пытаюсь отследить материал в моем наборе тестов и хотел бы иметь возможность подключить некоторый обратный вызов и узнать, какие из моих тестов косвенно инициируют создание объектов. Я просто хочу запустить набор тестов, и каждый раз, когда будет вызываться обратный вызов создания, показывайте, какой тест меня туда привел.
Пока что я добавил в свою модель обратный вызов after_create
и отфильтровал стек caller
, чтобы сохранить значимые части:
calling_tests =
caller
.select { |cl| cl.include? '/test/' }
.reject { |cl| cl.include? 'test_utils' }
.map { |cl| cl.delete_prefix(PROJECT_PATH) }
Что дает мне такой вывод:
["/test/controllers/books_controller_test.rb:426:in `block (3 levels) in <class:BooksControllerTest>'",
"/test/controllers/books_controller_test.rb:425:in `block (2 levels) in <class:BooksControllerTest>'"]
Оттуда, есть ли способ обнаружить, что это местоположение на самом деле является it "creates a new book"
тестом, и, возможно, даже получить всех его describe
предков? Мне было бы еще понятнее, когда я рассмотрю результаты.