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
相关产品推荐
相关产品推荐

