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

ruby-on-rails – 在RSpec中stub_model和mock_model有什么区别?

发布时间:2020-12-16 19:36:49 所属栏目:百科 来源:网络整理
导读:在RSpec中stub_model和mock_model有什么区别?到目前为止,我知道存根被用来阻止真正的方法被调用并返回一个预定义的值,而mock实际上是预期的,并且要求在接收器上调用该方法. 我也知道这些存根/模拟被用于允许孤立的测试,如控制器中没有触摸模型.但是,我仍然
在RSpec中stub_model和mock_model有什么区别?到目前为止,我知道存根被用来阻止真正的方法被调用并返回一个预定义的值,而mock实际上是预期的,并且要求在接收器上调用该方法.

我也知道这些存根/模拟被用于允许孤立的测试,如控制器中没有触摸模型.但是,我仍然对这两种方法感到困惑,当时每个方法都被使用?细节和例子将非常感谢.非常感谢!

解决方法

stub_model

The stub_model method generates an instance of a Active Model model.

While you can use stub_model in any example (model,view,controller,helper),it is especially useful in view examples,which are inherently more state-based than interaction-based.

mock_model

The mock_model method generates a test double that acts like an Active Model
model. This is different from the stub_model method which generates an instance of a real ActiveModel class.

The benefit of mock_model over stub_model is that its a true double,so the examples are not dependent on the behaviour (or mis-behaviour),or even the existence of any other code.
If you’re working on a controller spec and you need a model that doesn’t exist,you can pass mock_model a string and the generated object will act as though its an instance of the class named by that string.

rspec docs:stub_model和mock_model

(编辑:李大同)

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

    推荐文章
      热点阅读