4

我对 Rails 很陌生。我一直在使用 RSpec 开发我的应用程序。我刚刚遵循了Facebooker2的教程before_filter并添加了用于身份验证。

#app/controller/application_controller.rb
before_filter :ensure_authenticated

但是,我的规格(例如下面的规格)失败了,因为没有可以理解的有效会话。

#spec/controllers/answers_controller_spec.rb
describe "GET index" do
  it "assigns all answers as @answers" do
    get :index, {}, valid_session
    assigns(:answers).should include(answers(:reading))
  end
end

但我似乎无法找到一种方法来伪造一个有效的会话以供 rspec 在以下函数中使用。

#spec/controllers/answers_controller_spec.rb
def valid_session
  {}
end

有办法吗?如果不是,那么在这种情况下,rails 的处理方式是什么?

4

1 回答 1

0

如果您不关心测试实际身份验证并且只想模拟有效会话,则可以删除过滤器:

controller.stub(:ensure_authenticated).and_return(true)

编辑:您可能需要 ApplicationController.stub(...)

于 2012-12-07T16:06:27.043 回答