【问题标题】:Ruby Pry locate test file that triggered pryRuby Pry 定位触发 pry 的测试文件
【发布时间】:2020-09-17 18:47:19
【问题描述】:

我有一段代码通过集成测试触发我的 pry 会话,但不存在单元测试。因此,我不确定哪个测试正在执行此代码,并且每次我希望它触发时都需要运行所有测试。有没有办法在撬会话中冒泡测试/测试文件?我不需要触发 pry 会话的 _file_

我最好的解决方案是在 pry 会话中引发错误,然后继续测试套件,希望这会弄错测试并能够在测试报告中找到该测试。这种做法有点像在黑暗中刺伤。

【问题讨论】:

    标签: ruby pry


    【解决方案1】:

    您应该能够通过简单地调用 caller 来获得完整的调用堆栈:

    $ pry
    [1] pry(main)> caller
    => ["/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:290:in `eval'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:290:in `evaluate_ruby'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:659:in `handle_line'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:261:in `block (2 levels) in eval'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:260:in `catch'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:260:in `block in eval'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:259:in `catch'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pry_instance.rb:259:in `eval'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/repl.rb:77:in `block in repl'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/repl.rb:67:in `loop'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/repl.rb:67:in `repl'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/repl.rb:38:in `block in start'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/input_lock.rb:61:in `__with_ownership'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/input_lock.rb:78:in `with_ownership'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/repl.rb:38:in `start'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/repl.rb:15:in `start'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/pry_class.rb:191:in `start'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/lib/pry/cli.rb:119:in `start'",
     "/home/john/.gem/ruby/2.7.0/gems/pry-0.13.1/bin/pry:13:in `<top (required)>'",
     "/home/john/.gem/ruby/2.7.0/bin/pry:23:in `load'",
     "/home/john/.gem/ruby/2.7.0/bin/pry:23:in `<main>'"]
    
    

    【讨论】:

    • 这对我有用。出现了几十行,但测试文件最终确实出现了。太棒了,谢谢@John Ledbetter,你让我的一天变得更好。
    • 这也是一个有用的技巧,当你在应用程序中调试一些东西并想知道调用跟踪时
    猜你喜欢
    • 2015-03-11
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多