Ruby Minitest: динамически найти тестировщика - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь отследить материал в моем наборе тестов и хотел бы иметь возможность подключить некоторый обратный вызов и узнать, какие из моих тестов косвенно инициируют создание объектов. Я просто хочу запустить набор тестов, и каждый раз, когда будет вызываться обратный вызов создания, показывайте, какой тест меня туда привел.

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

...