"text/-6ren">
gpt4 book ai didi

ruby-on-rails-3 - rspec 中的 `puts response` 堆栈级别太深

转载 作者:行者123 更新时间:2023-12-04 07:06:06 25 4
gpt4 key购买 nike

在 Controller 测试中 rspec 和 rails 有一个奇怪的问题。每当我们添加 puts response在规范中,它输出很多这些

200
{"Content-Type"=>"text/html; charset=utf-8"}
200
{"Content-Type"=>"text/html; charset=utf-8"}
200
{"Content-Type"=>"text/html; charset=utf-8"}
200
{"Content-Type"=>"text/html; charset=utf-8"}

然后失败 SystemStackError: stack level too deep .通过 pry 检查响应效果很好,打印其他东西也可以。

升级到最新的 rspec (2.11) 没有什么区别。我们注意到看跌期权 to_a在响应上,它返回一个数组 [@status, @header, self] ,所以它会以某种方式导致这种奇怪的递归?

更新 : 这是一个 gist使用代码 + 规范

最佳答案

我相信您在机架中遇到了错误。 [rack_response].flatten进入无限循环。有关更多信息,请参阅这些问题:

  • https://github.com/rspec/rspec-rails/issues/601
  • https://github.com/rspec/rspec-expectations/issues/166
  • https://github.com/rack/rack/issues/419

  • 解决方案是不对响应对象本身设置任何期望,而是单独对状态、标题或正文设置期望,例如:
    last_response.status.should eq(200)
    last_response.body.should include("some text")
    last_response.headers.should include("Content-Type" => "text/plain")

    关于ruby-on-rails-3 - rspec 中的 `puts response` 堆栈级别太深,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12475478/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com