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

如何修改Mockery中Laravel Request模拟对象的类名称?

修改Mockery模拟对象的显示名称

要将Mockery生成的模拟对象名称从Mockery_3_API_V2_Custom_Requests_DestroyRequest改为DestroyRequest,可以通过Mockery的shouldBeNamed()方法实现,具体修改如下:

修改后的代码

protected function setUp(): void
{
    parent::setUp();
    $this->model = Mockery::mock(MyModel::class)->makePartial();

    $this->destroyRequest = $this->mockRequest(DestroyRequest::class);
}

private function mockRequest(string $requestClass)
{
    // 创建模拟对象并指定显示名称为类的短名称
    $request = \Mockery::mock($requestClass)
        ->shouldBeNamed(class_basename($requestClass));

    $request->shouldReceive('model')->andReturn('MockedModel');

    $request->shouldReceive('setModel')
                       ->once()
                       ->with($this->model);

    return $request;
}

原理说明

  • Mockery默认会为生成的模拟类添加Mockery_*前缀的类名,shouldBeNamed()方法可手动指定模拟对象的显示名称,在调试、输出或断言时会使用该名称。
  • 使用class_basename($requestClass)能动态获取类的短名称(比如DestroyRequest::class对应的短名称就是DestroyRequest),避免硬编码类名,提升代码可维护性。

内容的提问来源于stack exchange,提问作者csandreas1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 21:42:05