ruby-on-rails – RSpec将对象作为controller_spec中的参数传递
发布时间:2020-12-17 02:33:45 所属栏目:百科 来源:网络整理
导读:我有一个users_controller_spec.rb: describe "POST create" do describe "with valid params" do let(:user) { create(:user) } it "assigns a newly created user as @user" do post :create,user: user assigns(:user).should be_a(User) assigns(:user)
我有一个users_controller_spec.rb:
describe "POST create" do describe "with valid params" do let(:user) { create(:user) } it "assigns a newly created user as @user" do post :create,user: user assigns(:user).should be_a(User) assigns(:user).should be_persisted end end ... end Debuggin我发现控制器接收下一个参数 (rdb:1) pp params {"user"=>"1","controller"=>"users","action"=>"create"} 为什么“用户”=> “1”?,为什么没有正确传递用户对象? 解决方法
post:create expect用于创建用户记录的用户模型的属性.你看到“user”=> “1”因为它将您创建的用户的id传递给:user参数.
您不想创建用户记录来测试创建操作.您希望为创建操作创建属性哈希以创建记录. 你可以写这样的东西(假设这会通过你的模型验证): user_attributes = { :email => "something@example.com",:username => "something" } post :create,user: user_attributes (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |