【发布时间】:2012-06-01 17:21:28
【问题描述】:
我正在使用 minitest 测试和编写一个 sinatra 应用程序。目前,我使用 last_response.status 来查看请求发生了什么:
assert last_response.ok?, "Status 200 expected but was #{last_response.status}."
显示错误,如“预期状态为 200,但为 500”。但我想在 Rack ENV 中显示 sinatra.error,例如:
sinatra.error #<ArgumentError: wrong number of arguments (1 for 2)>
这样我就不必启动应用程序并在浏览器上进行检查。我试过这段代码:
assert last_response.ok?, "#{last_response.error}."
但是它抛出了一个“private method `error' called for #”错误。
如何在 sinatra 错误输出中显示变量的值?
【问题讨论】:
-
试试
last_response.send(:error)。 -
抛出无方法错误,而且我在Rack Documentation 中找不到发送方法。你在哪里找到的?
-
这不是 Rack 方法。这是
Object#send。您可以使用它访问私有方法。如果send未定义,您也可以尝试Object#__send__。 -
它会抛出“试图创建没有块的 Proc 对象”错误。虽然我试过了,但我还没有学过procs。如果这是问题,你介意指导我在 ruby 中的 procs。我的意思是,我在哪里可以彻底学习 procs?
标签: ruby unit-testing sinatra minitest