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

Laravel中如何测试Base64图片上传?解决大Base64串问题

解决Saloon测试中Base64图片字符串过长的问题

方案1:将Base64字符串存到单独文件,测试时读取

把Base64内容保存到项目的测试资源目录(比如tests/resources/test_image.base64),测试代码里直接读取文件内容,彻底避免超长字符串硬编码在代码里。

代码示例:

// 从文件读取Base64字符串
$base64Image = file_get_contents(base_path('tests/resources/test_image.base64'));

$attributes = ["token_image" => $base64Image];

json("POST", "/route", $attributes)
    ->assertOk()
    ->assertJson($response);

方案2:用极简占位Base64+调整Mock匹配规则

如果Mock录制后只需要验证接口逻辑,不需要真实图片内容,可以用一个极小的Base64图片(比如1x1透明像素),同时配置Saloon的Mock匹配器,忽略token_image字段的具体值,确保不同Base64内容都能匹配到录制的响应。

极简1x1透明PNG的Base64示例:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=

Saloon v3的匹配规则配置示例:

// 配置Mock的自定义匹配逻辑
$this->mockClient->addResponse($recordedResponse, function (Request $request) {
    // 先验证请求方法和路由是否匹配
    if ($request->getMethod() !== 'POST' || $request->getUri()->getPath() !== '/route') {
        return false;
    }
    
    // 移除token_image字段,只验证其他需要匹配的请求参数
    $requestData = $request->body()->all();
    unset($requestData['token_image']);
    
    // 这里填你需要验证的其他请求字段(如果有的话)
    $expectedOtherFields = [];
    return $requestData === $expectedOtherFields;
});

// 测试时直接用极简Base64
$attributes = ["token_image" => "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="];

json("POST", "/route", $attributes)
    ->assertOk()
    ->assertJson($response);

方案3:录制Mock时用占位符,测试时复用

录制Mock响应阶段,直接用一个简短的占位符代替真实Base64,测试时统一用该占位符发起请求,确保和录制的请求参数完全匹配,就能复用Mock响应。

录制阶段代码:

// 用简短占位符代替真实Base64
$attributes = ["token_image" => "TEST_IMAGE_PLACEHOLDER"];

// 执行请求并录制响应
$response = json("POST", "/route", $attributes)->send();
$this->mockClient->recordResponse($response);

测试阶段代码:

// 直接复用录制时的占位符
$attributes = ["token_image" => "TEST_IMAGE_PLACEHOLDER"];

json("POST", "/route", $attributes)
    ->assertOk()
    ->assertJson($response);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:47:38