我正在尝试在过滤之前编写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一样。我错过了什么?
答案 0 :(得分:3)
如果这是一个控制器规范,那么问题是单元测试控制器时路由不可用。重点是单独测试,这意味着没有路由
答案 1 :(得分:1)
Login正在调用没有登录方法的ProductsController。正如其他人告诉你的那样,当你测试另一个时,我不会打电话给一个控制器。因此,我认为你应该以其他方式登录。例如:
def login(user)
session[:user_id] = user.id
end