加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 这里发生了什么:rspec stub(:new).with …?

发布时间:2020-12-16 19:08:35 所属栏目:百科 来源:网络整理
导读:对于rspec生成的脚手架控制器规格发生了什么,我有点困惑.在我向我的应用程序添加授权之前似乎有意义,现在我需要更新我的测试. MyClass.stub(:new).with('these' = 'params') { mock_my_class(:save = true) } 在我的控制器中,我在创建新记录时将哈希合并到参
对于rspec生成的脚手架控制器规格发生了什么,我有点困惑.在我向我的应用程序添加授权之前似乎有意义,现在我需要更新我的测试.
MyClass.stub(:new).with('these' => 'params') { mock_my_class(:save => true) }

在我的控制器中,我在创建新记录时将哈希合并到参数中(它需要current_user id有效). MyClass.new(params [:my_class] .merge(:user_id => current_user.id))

测试失败

expected: ({"these"=>"params"})
got: ({"these"=>"params","user_id"=>315})

测试失败是有道理的,因为新方法接收了它没有预料到的参数.它预计会收到{‘这些’=> ‘params’}但它确实收到了”这些’=> ‘params’,’user_id’=> 1234}

所以我的自然反应是调整测试,因为新方法应该接收{‘这些’=> ‘params’,’user_id’=> 1234}并返回模拟对象.

所以我添加测试如下:

MyClass.stub(:new).with({'these' => 'params','user_id' => @user.id}) { mock_my_class(:save => true) }

这是我通过循环抛出的地方.测试结果如下:

expected: ({"these"=>"params","user_id"=>298})
got: ({"these"=>"params"})

好像一次成功的测试似乎神奇地躲避了我.我确信这些结果有合理的原因,但我似乎无法弄明白.

有帮助吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读