如何使用RSpec签署用户

时间:2012-05-18 21:42:12

标签: ruby-on-rails ruby rspec

我正在尝试在过滤之前编写RSpec以记录用户。我有一个产品控制器。为了查看产品,用户必须登录。我为spec / support / utilities添加了一个登录方法,如下所示:

def login(user)
  post login_path, email: user.email, password: "password"
end

然后我在spec / controllers / products测试中的before filter中调用了该方法:

before :each do
  user = FactoryGirl.create(:user)
  login(user)
end

当我运行测试时,我收到以下错误:

The action '/login' could not be found for ProductsController

我有/login的路由,我的用户身份验证很简单 - 就像Railscasts #250 Authentication from Scratch一样。我错过了什么?

2 个答案:

答案 0 :(得分:3)

如果这是一个控制器规范,那么问题是单元测试控制器时路由不可用。重点是单独测试,这意味着没有路由

答案 1 :(得分:1)

Login正在调用没有登录方法的ProductsController。正如其他人告诉你的那样,当你测试另一个时,我不会打电话给一个控制器。因此,我认为你应该以其他方式登录。例如:

def login(user)
  session[:user_id] = user.id
end