如何解决如何使用补丁请求更新 Rails 中的布尔属性
我有一个布尔属性,我正在尝试使用 Rails 中的 Minitest 对其进行测试。这是有问题的测试:
IMetadataScope
我不明白为什么这不起作用。我可以在我的装置、数据库种子、浏览器中手动以及使用 Capybara 进行的系统测试中将 test "admins can change a user's board member status" do
patch user_path(@member,as: @admin),params: { user: { board_member: true } }
assert_redirected_to(user_path(@member))
assert_equal "Profile was successfully updated.",flash[:notice]
assert_equal true,@member.board_member
end
属性设置为 board_member
。
我尝试使用 true
设置将用户参数传递给补丁请求,但这也不起作用。我不断收到与布尔属性未切换为 true 相同的错误:
to_json
以下是我在用户控制器中将参数列入白名单的方法:
test_admins_can_change_a_user's_board_member_status#UsersControllerTest (1.28s)
Expected: true
Actual: false
同样,这在浏览器中按预期工作,但我想测试参数以确保在您尝试通过 url 提交“board_member”属性时没有安全漏洞。
解决方法
您需要重新加载@member 以便将您的应用程序所做的更改反映到数据库中。
test "admins can change a user's board member status" do
assert_changes -> { @member.board_member },from: false,to: true do
patch user_path(@member,as: @admin),params: { user: { board_member: true } }
@member.reload # get changes performed by app to db
end
# consider extracting this into separate examples
assert_redirected_to(user_path(@member))
assert_equal "Profile was successfully updated.",flash[:notice]
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。