3

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

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

然后我在我的 spec/controllers/products 测试中调用了 before 过滤器中的方法:

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一样。我错过了什么?

4

2 回答 2

3

如果这是一个控制器规范,那么问题是在单元测试控制器时路由不可用。重点是隔离测试,也就是没有路由

于 2012-05-18T23:38:27.323 回答
1

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

def login(user)
  session[:user_id] = user.id
end
于 2012-05-22T16:39:10.357 回答