Rspec 强参数测试失败

Rspec testing fail strong params

暂时不熟悉 Rspec,试图让这个通过一段时间,尝试了几个答案,但还没有成功,我的控制器需要这两个参数,如下所示:

class UsersController < ApplicationController
  def new
    @user = User.new
  end

  def create
    @user = User.new(user_params)
    if @user.save
      redirect_back fallback_location: new_user_path
    else
      render :new
    end
  end
private
  def user_params
    params.require(:user).permit(:username, :password)
  end
end

这是给我带来问题的 rspec 测试:

  describe "GET #create" do
    it "returns http success" do
      get :create
      expect(response).to have_http_status(:success)
    end
  end

这是我遇到的错误:

1) UsersController GET #create returns http success
     Failure/Error: params.require(:user).permit(:username, :password)

     ActionController::ParameterMissing:
       param is missing or the value is empty: user

我正在查看 rspec 文档,如有任何帮助,我们将不胜感激。

试试这个:

describe "POST #create" do
  it "returns http success" do
    post :create, params: { user: { username: "name", password: "password" } }
    expect(response).to have_http_status(:success)
  end
end

应该是post :create,不是get :create