首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PHPUnit/Laravel中传递一个模拟对象作为实例

在PHPUnit/Laravel中传递一个模拟对象作为实例
EN

Stack Overflow用户
提问于 2017-05-30 22:25:09
回答 1查看 589关注 0票数 1

我正在模拟一个对象,然后像这样写一个测试...

代码语言:javascript
复制
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()的调用,如下所示...

代码语言:javascript
复制
public function testMethod($string){
    $this->internalMethod();
}

..。但是当执行到达对$this->internalMethod()的调用时,$this现在是原始$purchase对象的实例,而不是$purchase_m模拟对象的实例。

因此,对$this->internalMethod()的函数调用不会像我们希望的那样返回"GOLD“。

如果有任何建议,我们将非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2017-05-30 22:45:13

嘿嘿,算了!解决了它。

代码语言:javascript
复制
$shpm \Mockery::mock(Purchase::class)->makePartial();

通过创建partial mock,您可以在调用实例上的方法时保持实例的完整性。

希望这对某些人有帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44264952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档