Ruby Minitest:动态查找调用者测试

时间:2019-05-11 10:24:39

标签: ruby minitest

我正在尝试跟踪测试套件中的内容,并希望能够插入一些回调,并知道我的哪些测试间接触发了对象的创建。我愿意只运行测试套件,每次触发创建回调时,显示哪个测试将我带到了那里。

到目前为止,我在模型上添加了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祖先?当我查看结果时,对我来说甚至更加清晰。

0 个答案:

没有答案