【问题标题】:How can I see what actually happens when a Test::Unit test runs?我怎样才能看到 Test::Unit 测试运行时实际发生了什么?
【发布时间】:2009-06-28 20:36:21
【问题描述】:

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

如何查看请求、响应、flash、会话、变量集等?

有没有类似...

rake test specific_test_file --verbose

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      这在实践中意味着什么?如果某些操作在您的操作中不起作用,并且您的操作调用了 3 个模型方法,那么您应该能够轻松地仅查看单元测试来隔离问题。如果一个(或多个)单元测试失败,那么你就知道哪个方法是有罪的。 如果所有单元测试都通过了,那么问题就出在操作本身上,但调试起来应该很容易,因为您已经分别测试了这些方法。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          另一个问题的答案suggested

          rake test TESTOPTS=-v
          

          【讨论】:

            【解决方案5】:

            巧妙的方法是使用prypry-nav gems。请务必将它们包含在您的测试 gem 组中。我也在开发组中使用它们。 pry and pry nav 的好处在于您可以使用控制台单步执行您的代码,因此您不仅可以看到执行的代码,还可以在测试期间输入控制台命令。

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

            【讨论】:

              猜你喜欢
              • 2017-05-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-08-23
              • 2016-07-20
              • 2021-11-25
              • 1970-01-01
              • 2020-07-26
              相关资源
              最近更新 更多