测试设备注册控制器与功能测试

Ger*_*Ger 3 functional-testing devise ruby-on-rails-3

我正在尝试测试我的注册控制器(它会覆盖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
Run Code Online (Sandbox Code Playgroud)

但是,回复的回复显示"您必须注册/登录才能继续"这没有任何意义,因为我可以从浏览器手动执行此操作以注册用户.

有任何想法吗?

jor*_*npg 5

刚刚遇到同样的问题.答案在设计文档中:

2)如果您正在测试Devise内部控制器或继承自Devise的控制器,您需要告诉Devise在请求之前应该使用哪个映射.这是必要的,因为Devise从路由器获取此信息,但由于功能测试不通过路由器,因此需要明确告知.例如,如果您正在测试用户范围,只需执行以下操作:

@request.env["devise.mapping"] = Devise.mappings[:user]
get :new
Run Code Online (Sandbox Code Playgroud)