Ruby on rails 3 出厂前过滤器rspec测试失败

Ruby on rails 3 出厂前过滤器rspec测试失败,ruby-on-rails-3,rspec,factory-bot,Ruby On Rails 3,Rspec,Factory Bot,我这里有个新手问题。我一直遵循rails教程,在测试中遇到了一个障碍。当我实现以下过滤器时 class UsersController < ApplicationController before_filter :authenticate, :only => [:edit, :update] 这是我在spec\u helper.rb中的测试登录代码 def test_sign_in(user) controller.sign_in(user) end sign_-in方法位于S

我这里有个新手问题。我一直遵循rails教程,在测试中遇到了一个障碍。当我实现以下过滤器时

class UsersController < ApplicationController
before_filter :authenticate, :only => [:edit, :update]
这是我在spec\u helper.rb中的测试登录代码

def test_sign_in(user)
 controller.sign_in(user)
end
sign_-in方法位于SessionHelper中,它包含在ApplicationController中:

def sign_in(user)
 cookies.permanent.signed[:remember_token] = [user.id, user.salt]
 current_user = user
end
我不知道如何进一步调查。我的猜测是,由于Rspec无法“获取编辑”,因此我必须查看该请求的日志,但测试只告诉我它返回了false。下一步我可以去哪里

更新:我在log/test.log中发现,每一行“Processing by UsersController#index as HTML”后面都有一个重定向,如下所示:

  Processing by UsersController#index as HTML
  [1m [35mUser Load (0.2ms) [0m  SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT 1
  Redirected to http://test.host/signin
这是否意味着每个测试索引操作之后都会重定向到signin?如果这是真的,它似乎与测试一致,包括方法(如上)中的测试符号失败和其他类似测试通过:

describe "GET 'index' for non-signed-in users" do     
  it "should deny access" do
    get :index
    response.should redirect_to(signin_path)
  end
end

我将再次尝试使用test\u sign\u in方法。

您需要在
sign\u in
帮助程序中调用
self

def sign_in(user)
  cookies.permanent.signed[:remember_token] = [user.id, user.salt]
  self.current_user = user
end

你能给我们看一下签到的方法吗?很乐意。谢谢你,利希塔姆伯格。试着看看
log/test/log
def sign_in(user)
  cookies.permanent.signed[:remember_token] = [user.id, user.salt]
  self.current_user = user
end