gpt4 book ai didi

ruby-on-rails - RunTimeError:Rspec 2.10.1 中的 ActionController::RackDelegation for rails 3.1.4 应用程序 Controller

转载 作者:数据小太阳 更新时间:2023-10-29 06:54:44 26 4
gpt4 key购买 nike

在我们的 rails 3.1.4 应用程序中,rspec 用于测试应用程序 Controller 中的公共(public)方法 require_signin。这是 require_signin 方法:

  def require_signin
if !signed_in?
flash.now.alert = "Log in first!"
redirect_to signin_path
end
end

这是 rspec 代码:

it "should invoke require_signin for those without login" do
controller.send(:require_signin)
controller {should redirect_to signin_path}
end

上面的 rspec 会产生巨大的多页错误,如下所示:

RuntimeError:←[0m
←[31mActionController::RackDelegation#status= delegated to @_response.status=, but @_response is nil: #<ApplicationController:0x3
a67f10 @_routes=nil, @_action_has_layout=true, @_view_context_class=nil, @_headers={"Content-Type"=>"text/html"}, @_status=200, @_reques
t=#<ActionController::TestRequest:0x3a68720 @env={"rack.version"=>[1, 1], "rack.input"=>#<StringIO:0x34fad60>, ........

rspec 代码有什么问题?非常感谢。

最佳答案

我遇到了这个错误并意识到我正在通过调用我想测试的辅助方法在 Controller 上触发重定向,但我还没有实际实例化测试请求。在调用期望之前调用 get :index 消除了错误。

it "redirects if some condition" do
subject.send(:helper_method)
get :action # <= Need this before setting expectation below
response.should redirect_to("/somewhere")
end

关于ruby-on-rails - RunTimeError:Rspec 2.10.1 中的 ActionController::RackDelegation for rails 3.1.4 应用程序 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10989461/

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