我试图测试我的注册控制器(它会覆盖Devise的内置控制器),但是当我进行以下测试时:
test "should create user" do
post :create, user: { email: "temp12345@email.com", first_name: @user.first_name}
assert_redirected_to user_path(assigns(:user))
end
然而,回复的回复表示"您必须注册/登录才能继续"这没有任何意义,因为我可以从浏览器手动执行此操作以注册用户。
有什么想法吗?
答案 0 :(得分:5)
刚刚遇到同样的问题。答案在devise docs:
2)如果您正在测试Devise内部控制器或控制器 继承自Devise,你需要告诉Devise哪个映射应该 在请求之前使用。这是必要的,因为Devise得到了这个 来自路由器的信息,但由于功能测试未通过 通过路由器,需要明确告知。例如,如果 您正在测试用户范围,只需执行以下操作:
@request.env["devise.mapping"] = Devise.mappings[:user]
get :new