为了账号安全,请及时绑定邮箱和手机立即绑定

嘲弄“with”方法没有显示失败的原因

嘲弄“with”方法没有显示失败的原因

PHP
慕无忌1623718 2022-10-09 20:03:13
我在with模拟上使用方法以断言该方法是以对象作为参数调用的        Mockery::mock(PaymentRepository::class)             ->shouldReceive('removeTripPayments')             ->with($trip)             ->mock();哪个失败了,我仍然不知道为什么,但我最关心的是这是否是检查它的正确方法,以及是否有可能显示预期参数与给定参数的不同之处。1) PaymentServiceTest::test_removing_paymentsMockery\Exception\NoMatchingExpectationException: No matching handler found for Mockery_0_PaymentRepository::removeTripPayments(object(Trip)). Either the method was unexpected or its arguments matched no expected argument list for this methodObjects: ( array (  'MyNamespace\Trip' =>  array (    'class' => 'MyNamespace\\Trip',    'properties' =>    array (    ),  ),))
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

当您将对象作为参数传递给方法时,在这种情况下,您正在传递对象(Trip),然后 PHPUnit 变得疯狂。我一直有这个问题,你有两个解决方案,第一个使用 Mockery::on();


->with(Mockery::on(function($Param){

    $this->assertEqual(get_class($Param), get_class(Trip));

    return true;

}))

如您所见,PHPUnit 无法完全比较两个对象,因此您需要比较部分对象,在这种情况下,我使用 get_clas 来检查类的名称。第二种解决方案可能是使用


->andReturnUsing(function($param){

   $this->assertEqual(get_class($Param), get_class(Trip));

   return true; // Expected response

});

也许这对你有帮助。


查看完整回答
反对 回复 2022-10-09
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信