我在用户注册的测试中收到错误ActionController::UrlGenerationError: No route matches {:action=>"show", :controller=>"profiles"} missing required keys: [:user_id]
。注册后用户被重定向到用户的个人资料,但我的测试失败。以下是我的代码的一些行..
在会话控制器中创建操作
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
log_in user
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
redirect_back_or user_profile_path(user, @profile)
else
flash.now[:danger] = 'Invalid email/password combination'
render 'new'
end
在用户控制器中创建操作
def create
@user = User.new(user_params)
if @user.save
log_in @user
flash[:success] = "Welcome to the Mini Olympics"
redirect_to user_profile_path(current_user, @profile)
else
render 'new'
end
end
注册测试(有效信息)
test "valid signup information" do
get signup_path
assert_difference 'User.count', 1 do
post_via_redirect user_profile_path, user: { email: "user@example.com",
password: "password",
password_confirmation: "password",
profile_atrributes: {user_id: @user.id, name: "Example Test", street: "24 Fred Rd", city: "Cutlin", state: "SW", zipcode: "35478"}}
end
assert_template 'profiles/show'
assert is_logged_in?
end
测试在post_via_redirect
行失败,但实际应用程序正常运行。
答案 0 :(得分:1)
在测试中,using (var namedPipeServerStream = new NamedPipeServerStream(_pipeName,
PipeDirection.InOut,
1,
PipeTransmissionMode.Message,
PipeOptions.Asynchronous))
{
namedPipeServerStream.WaitForConnection();
MemoryStream ms = new MemoryStream();
byte[] buffer = new byte[0x1000];
do { ms.Write(buffer, 0, namedPipeServerStream.Read(buffer, 0, buffer.Length)); }
while (!namedPipeServerStream.IsMessageComplete);
string stringData = Encoding.UTF8.GetString(ms.ToArray());
_callback(stringData);
}
Thread.Sleep(1);
缺少其参数。它应该是
user_profile_path