gpt4 book ai didi

ruby-on-rails - 预期响应为 ,但为 <200>

转载 作者:行者123 更新时间:2023-12-03 16:11:19 25 4
gpt4 key购买 nike

我正在尝试在使用配置文件创建用户的 UsersController 中测试创建操作;然后用户被重定向到用户的个人资料页面,但我收到错误 Expected response to be a <redirect>, but was <200>

在用户 Controller 中创建操作

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 users_path, user: @user.attributes
@user.build_profile(name: "Micheal Example", street: "24 Martins St.", city: "Waterloo", state: "AW", zipcode: "22456")
@user.save
#assert_redirected_to user_profile_path(@user)
assert_redirected_to @user.profile
end
assert_template 'profiles/show'
assert is_logged_in?
end

最佳答案

错误消息意味着创建操作失败,而不是重定向到用户的配置文件(状态 302 ),它再次呈现表单(状态 200 )。

至于为什么会失败,目前还不清楚。测试似乎混淆了 Controller 中 @user 的值和测试中 @user 的值,这是两个完全不同的对象。

当测试一个 Action 时,你通过 params 散列传递值,就像你在上面做的那样:

post users_path, user: @user.attributes

但是测试然后无缘无故地再次设置 @user 的值。我不清楚 @user 的原始值(测试中的那个)从哪里获得它的属性。

你可能想做这样的事情:
 assert_difference 'User.count', 1 do
user = User.new
user.build_profile(name: "Micheal Example", street: "24 Martins St.", city: "Waterloo", state: "AW", zipcode: "22456")
post users_path, user: user.attributes
assert_redirected_to user.profile
end

局部变量 user 只是为了方便生成属性哈希值。您可以轻松地将属性直接分配给散列并将它们传递给 post

关于ruby-on-rails - 预期响应为 <redirect>,但为 <200>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32386685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com