我正在模拟一个对象,然后像这样写一个测试...
public function test_mocked_object(){
$purchase = new Purchase();
$purchase_m = \Mockery::mock($purchase);
$purchase_m->shouldReceive('internalMethod')->andReturn('GOLD');
$purchase_m->testMethod('test');
}testMethod()包含对internalMethod()的调用,如下所示...
public function testMethod($string){
$this->internalMethod();
}..。但是当执行到达对$this->internalMethod()的调用时,$this现在是原始$purchase对象的实例,而不是$purchase_m模拟对象的实例。
因此,对$this->internalMethod()的函数调用不会像我们希望的那样返回"GOLD“。
如果有任何建议,我们将非常感谢。
发布于 2017-05-30 22:45:13
嘿嘿,算了!解决了它。
$shpm \Mockery::mock(Purchase::class)->makePartial();通过创建partial mock,您可以在调用实例上的方法时保持实例的完整性。
希望这对某些人有帮助!
https://stackoverflow.com/questions/44264952
复制相似问题