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

Laravel集成iOS内购订阅Mock测试报错:ClientFactory无mock方法

解决Laravel集成iOS内购订阅Mock测试时的ClientFactory::mock()未定义错误

问题场景

在Laravel中集成iOS应用内购订阅功能,编写Mock测试验证响应数据时,出现错误:

Call to undefined method Imdhemy\AppStore\ClientFactory::mock()

错误原因

Imdhemy\AppStore\ClientFactory类并未提供mock()静态方法,你可能参考了过时的文档或错误示例代码。当前版本的imdhemy/app-store包需要通过Guzzle的MockHandler来模拟HTTP响应。

解决方案

使用Guzzle的MockHandler和HandlerStack创建模拟客户端,替代不存在的ClientFactory::mock()方法。修改后的可行代码如下:

<?php

namespace App\Http\Controllers;

use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Psr7\Response;
use Imdhemy\AppStore\ClientFactory;
use Imdhemy\Purchases\Facades\Product;
use JsonException;

class TestApiController extends Controller
{   
    public function ValidateReceipt(): void
    {
        // 创建预期响应体
        $responseBody = [
            'environment' => 'Sandbox',
            'status' => 0,
            'latest_receipt_info' => [
                [
                    'product_id' => 'fake_product_id',
                    'quantity' => '1',
                    'transaction_id' => 'fake_transaction_id',
                    // 其他字段按需补充
                ],
            ],
            // 其他字段按需补充
        ];

        // 创建Mock响应实例
        $mock = new MockHandler([
            new Response(200, [], json_encode($responseBody, JSON_THROW_ON_ERROR)),
        ]);

        // 创建Guzzle HandlerStack
        $handlerStack = HandlerStack::create($mock);
        // 通过ClientFactory创建带Mock的客户端
        $client = ClientFactory::create(['handler' => $handlerStack]);

        // 使用模拟客户端验证收据
        $verifyResponse = Product::appStore($client)->receiptData('fake_receipt_data')->verifyReceipt();
        
        // 后续可对$verifyResponse进行断言或业务逻辑处理
        dd($verifyResponse);
    }
}

额外提示

  • 建议将测试逻辑放在Laravel的Tests目录下的测试类中,而非业务Controller内,遵循测试代码与业务代码分离的原则。
  • 确认你的imdhemy/purchases和imdhemy/app-store包为最新稳定版,避免版本差异导致的API不一致问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:46:17