use*_*363 8 ruby ruby-on-rails http rspec2 ruby-on-rails-3.1
在我们的rails 3.1.4 app中,rspec用于测试require_signin应用程序控制器中的公共方法.这是方法require_signin:
def require_signin
if !signed_in?
flash.now.alert = "Log in first!"
redirect_to signin_path
end
end
Run Code Online (Sandbox Code Playgroud)
这是rspec代码:
it "should invoke require_signin for those without login" do
controller.send(:require_signin)
controller {should redirect_to signin_path}
end
Run Code Online (Sandbox Code Playgroud)
上面会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>, ........
Run Code Online (Sandbox Code Playgroud)
可能是什么错误的rspec代码?非常感谢.
可能并不完全有用,但我在遇到同样的错误后来到这里。我从一个通过的测试套件开始,做了一些更改,然后开始出现如下错误:
RuntimeError:
ActionController::RackDelegation#status= delegated to @_response.status=, but @_response is nil:
...many lines...
Run Code Online (Sandbox Code Playgroud)
仔细查看该错误后,我注意到它在某处说:
@flashes={:alert=>"You have to confirm your account before continuing."}
Run Code Online (Sandbox Code Playgroud)
我刚刚:confirmable在 Devise 中添加了该选项,并意识到我创建的所有尝试登录的用户都未经确认,因此无法成功登录。我需要添加到confirmed_at Time.now为用户创建的工厂/装置中。但在您的示例中,您似乎正在尝试在未登录时进行测试,所以我不确定这是否一定适用。
| 归档时间: |
|
| 查看次数: |
4718 次 |
| 最近记录: |