在Ruby on Rails中,是否可能调试单元测试?

19

因此,我刚刚转移到了一个基于Ruby on Rails构建的新项目。我对它还很陌生,仍在学习中。我可以调试大部分应用程序代码,但似乎无法调试单元测试代码和被测试过的代码。

当我以调试模式运行单元测试时,我可以设置断点在单元测试类代码中,例如添加固定装置的位置,但是断点不起作用在测试方法代码内和测试过的代码内,在正常工作流程期间它们是有效的。团队中的其他人使用打印语句进行单元测试调试。

那么,在Rails中调试单元测试代码是否可能呢?

我们正在使用jruby 1.3.1、rails-2.3.1,我使用IntelliJ IDEA进行调试,如果必须切换到eclipse或netbeans也可以。

编辑:实际上,“不可能”也是一个有帮助的答案,如果您知道是这样的话。至少我不会再浪费时间在上面了。


2
如果您在代码中放置了一个“debugger”语句,即使在单元测试中运行,它也会跳转到调试器,不是吗? - Jakob Borg
2个回答

30

是的,这是可能的。

首先必须安装ruby-debug。

sudo gem install ruby-debug

然后在你想要开始调试的代码行之前写入

debugger

下一步:像正常运行单元测试一样运行它们。

当Ruby达到包含debugger指令的行时,它将停止并显示控制台提示符。

现在你可以使用与gdb相同的方式进行调试。

这个链接以非常好的方式解释了它:http://blog.nanorails.com/articles/2006/07/14/a-better-rails-debugger-ruby-debug

希望这些信息对您有用。


4
同时,一旦进入调试器,输入 irb 即可进入类似于 script/console 的环境。这可能有助于您找出测试出了什么问题。 - user664833

8
作为最新更新,您还可以使用 byebug ,它针对 Ruby 2 调试。

它也默认包含在任何新的 Rails 项目的 Gemfile 中,并且在 Debugging Rails Applications Guide 中还有一个不错的教程。

您只需插入

byebug

在您的测试文件中添加

,然后像往常一样运行测试即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接