如何在Test :: Unit测试运行时看到实际发生的情况?

时间:2009-06-28 20:36:21

标签: ruby-on-rails ruby unit-testing testing

在Rails应用程序中,我有一个失败的Test :: Unit功能测试,但控制台上的输出并没有告诉我太多。

如何查看请求,响应,闪存,会话,变量集等?

有什么类似......

rake test specific_test_file --verbose

5 个答案:

答案 0 :(得分:3)

您可以按建议将puts语句添加到测试用例中,或者将对Rails.logger.debug()的调用添加到应用程序代码中,并观察log / development.log以跟踪正在发生的事情。

答案 1 :(得分:2)

在测试中,您可以访问大量可供用户调试测试的资源。

 p @request
 p @response
 p @controller
 p flash
 p cookie
 p session

另外,请记住,您的操作应尽可能简单,并且所有特定操作执行都应通过单个单元测试进行测试。 功能测试应该保留给整个动作执行。

在实践中意味着什么?如果某些内容在您的操作中不起作用,并且您的操作调用了3个模型方法,那么您应该只需查看单元测试即可轻松隔离问题。如果一个(或多个)单元测试失败,那么您知道哪个方法是有罪的。 如果所有的单元测试都通过了,那么问题就是操作本身,但是由于你已经单独测试了这些方法,所以它应该很容易调试。

答案 2 :(得分:1)

在失败的测试中使用p @request等它的丑陋,但它可以工作

答案 3 :(得分:0)

回答单独的问题suggested

rake test TESTOPTS=-v

答案 4 :(得分:0)

光滑的方式是使用prypry-nav宝石。请务必将它们包含在测试宝石组中。我也在开发组中使用它们。关于pry和pry nav的好处是你可以使用控制台单步执行代码,这样你不仅可以看到执行代码,还可以在测试期间输入控制台命令。

您只需在要触发控制台的代码中的某些位置输入binding.pry即可。然后使用'step'命令,您可以在代码执行时逐行移动。