Mockery:被动局部模拟与默认模拟有何不同?

时间:2014-08-26 12:22:29

标签: php mocking mockery

在这篇(很棒)快速引用Mockery的最后几段中,作者解释了一些非默认的模拟行为修饰符,但可能很有用。其中包括makePartial()来电和shouldDeferMissing()来电。

这些与默认行为有何不同?当你创建一个模拟(Mockery::mock('myClass')),并且没有添加任何方法期望时,所有方法调用都会转到父级(即MyClass),据我所知......

这是Mockery快速参考的最后一部分。

  

\嘲笑::模拟(' MyClass的') - > makePartial()

     

     

\嘲笑::模拟(' MyClass的') - > shouldDeferMissing()

     

被称为被动局部模拟(不要与真正的局部模糊混淆)   稍后讨论的模拟对象),这种形式的模拟对象将推迟所有   方法不受模拟的父类的期望,   即MyClass。而之前的shouldIgnoreMissing()返回了   null,此行为只调用父匹配方法。

1 个答案:

答案 0 :(得分:4)

  • 完整模拟对象要求必须进行所有方法调用
  • Real partial mock对象将仅模拟指定的方法,并且不能设置对非模拟方法的期望。如果在创建模拟时没有指定方法,它会将对该方法的所有调用推迟到父类。
  • 被动部分模拟将推迟方法调用而不期望模拟的父类。

后两者之间的区别在于,对于被动局部模拟,您不需要在设置期望之前指定要模拟的方法。设置期望时,它将为您创建模拟方法。