通常,当测试失败时,我花费了很多时间来弄清楚导致失败的原因.如果RSpec可以在测试失败时启动一个Ruby调试器,那么可以立即检查本地变量来深入了解原因.
我正在使用的工作现在看起来像这样:
# withing some test debugger unless some_variable.nil? expect(some_variable).to be_nil
然而,这种方法是麻烦的,因为我先等待测试失败,然后添加调试器行,解决问题,然后必须删除调试器行,而我希望它的工作更像是gdb,它有能力踢当一个异常被击中,而不需要用调试器语句胡椒你的代码库.
编辑:我试过普利茅斯它对我来说还不够可靠.发展历史似乎也表明它不是很好的支持宝石,所以我宁愿不依赖它.
更新:我试过撬动抢救,发现它很整洁.但是,我使用了zeus [https://github.com/burke/zeus],并且想知道是否有办法使其与撬动协同工作
解决方法
使用
pry-rescue,这是普利茅斯的精神继承人:
从自述:
如果您使用RSPec或respec,则可以使用rescue rspec或rescue respec在每次测试失败时打开撬动会话:
$rescue rspec From: /home/conrad/0/ruby/pry-rescue/examples/example_spec.rb @ line 9 : 6: 7: describe "Float" do 8: it "should be able to add" do => 9: (0.1 + 0.2).should == 0.3 10: end 11: end RSpec::Expectations::ExpectationNotMetError: expected: 0.3 got: 0.30000000000000004 (using ==) [1] pry(main)>