You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP/Mockery中如何向被Mock类的构造函数传入参数

Mockery 构造带参数的类 Mock 方法

针对带构造参数的ActionRequestService类,Mockery提供几种传参方式,适配不同测试场景:

  • 调用真实构造函数的完整Mock
    若需要Mock对象执行原类的构造逻辑,直接在mock()方法中传入构造参数数组:

    $actionRequestServiceMock = Mockery::mock(ActionRequestService::class, [$param1, $param2]);
    

    之后可正常模拟类中的任意方法,构造函数会按原逻辑初始化对象属性。

  • 保留部分真实逻辑的Partial Mock
    如果需要保留类中部分方法的真实执行逻辑,仅Mock特定方法,同样传入构造参数后调用makePartial():

    $actionRequestServiceMock = Mockery::mock(ActionRequestService::class, [$param1, $param2])->makePartial();
    

    这种方式适合依赖构造函数初始化的属性,但部分业务方法需要模拟的场景。

  • 跳过真实构造逻辑的Mock
    若构造函数无关键初始化逻辑,仅需形式上满足类的构造参数要求,可使用setConstructorArgs()传入参数:

    $actionRequestServiceMock = Mockery::mock(ActionRequestService::class)->setConstructorArgs([$param1, $param2]);
    

    注意:这种方式不会执行原类的构造函数,若类的方法依赖构造初始化的属性,可能引发异常。

内容的提问来源于stack exchange,提问作者Program.X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:37:11