在PHPUnit/Laravel中将模拟对象作为实例传递
我在模仿一个对象并编写一个测试,就像这样在PHPUnit/Laravel中将模拟对象作为实例传递,php,laravel,phpunit,mockery,Php,Laravel,Phpunit,Mockery,我在模仿一个对象并编写一个测试,就像这样 public function test_mocked_object(){ $purchase = new Purchase(); $purchase_m = \Mockery::mock($purchase); $purchase_m->shouldReceive('internalMethod')->andReturn('GOLD'); $purchase_m->testMethod('test')
public function test_mocked_object(){
$purchase = new Purchase();
$purchase_m = \Mockery::mock($purchase);
$purchase_m->shouldReceive('internalMethod')->andReturn('GOLD');
$purchase_m->testMethod('test');
}
public function testMethod($string){
$this->internalMethod();
}
testMethod()
包含对internalMethod()
的调用,如下所示
public function test_mocked_object(){
$purchase = new Purchase();
$purchase_m = \Mockery::mock($purchase);
$purchase_m->shouldReceive('internalMethod')->andReturn('GOLD');
$purchase_m->testMethod('test');
}
public function testMethod($string){
$this->internalMethod();
}
。。。但是当执行到达调用$this->internalMethod()
时,$this
现在是原始$purchase
对象的实例,而不是$purchase\m
模拟对象的实例
因此,对$this->internalMethod()
的函数调用不会像我们希望的那样返回“GOLD”
任何指点都将不胜感激 呵呵,别客气!解决了
$shpm \Mockery::mock(Purchase::class)->makePartial();
通过创建实例,可以在调用实例上的方法时保持实例的完整性
希望这对别人有帮助 呵呵,别客气!解决了
$shpm \Mockery::mock(Purchase::class)->makePartial();
通过创建实例,可以在调用实例上的方法时保持实例的完整性
希望这对别人有帮助