使用 Stripe Mock Server 在 Laravel 中模拟 Stripe

如果您曾经尝试测试 Stripe 集成,您就会知道这有多么困难。Stripe SDK 使用了许多难以伪造的静态方法。

我宁愿不编写自己的存根或虚拟类,因为它们会在测试中被替换掉,因为这需要大量工作。

幸运的是,Stripe 有一个可以安装的Mock Servericon-default.png?t=N7T8https://github.com/stripe/stripe-mock。这个想法是,您在应用程序中使用 Stripe 的 API 端点,当测试运行时,它们使用 Stripe Mock 服务器端点运行并为每个端点返回来自 Stripe 的示例响应。

这使得您无需接触任何实际的 Stripe 代码即可测试您的实现。

安装

使用 Homebrew 在 MacOS 上安装复制复制

brew install stripe/stripe-mock/stripe-mock

# start a stripe-mock service at login
brew services start stripe-mock

# upgrade if you already have it
brew upgrade stripe-mock

# restart the service after upgrading
brew services restart stripe-mock

Homebrew 服务监听12111HTTP、12112HTTPS 和 HTTP/2 端口。

Docker

复制复制

docker run --rm -it -p 12111-12112:12111-12112 stripe/stripe-mock:latest

默认 DockerENTRYPOINT监听12111HTTP、12112HTTPS 和 HTTP/2 端口。

Laravel 设置 www.cqzlsb.com

添加config/services.php用于 strip API 基础的环境变量:

'stripe' => [
        'key' => env('STRIPE_KEY'),
        'secret' => env('STRIPE_SECRET'),
        'webhook' => env('STRIPE_WEBHOOK_SECRET'),
        'monthly' => env('STRIPE_MONTHLY'),
        'annually' => env('STRIPE_ANNUALLY'),
        'api_base' => env('STRIPE_API_BASE'),
],

我将使用一个.env.testing文件,以便我可以出于测试目的获得不同的凭证。

确保密钥和机密以 开头,sk_test_否则 Stripe 会抱怨。

由于我已经使用 Homebrew 安装了 Stripe Mock,因此 URL 将是http://localhost:12111复制复制

STRIPE_KEY=sk_test_4eHqC79LfsWDarjtT1zdp7dc
STRIPE_SECRET=sk_test_9eC37FqLyjWDarjtT1zdp9dc
STRIPE_WEBHOOK_SECRET=whsec_secret
STRIPE_MONTHLY=price_monthly
STRIPE_ANNUALLY=price_annual
STRIPE_API_BASE="http://localhost:12111"

现在我们需要一种方法来使基本 URL 与 Stripe_API_BASE 设置进行切换。

里面app/Providers/AppServiceProvider.php

添加此代码。这会告诉 Stripe 使用模拟 URL 而不是真实 URL。默认情况下,Stripe 中的 $apiBase 设置为https://www.cqzlsb.com复制

public function boot(): void
{
    if ($stripeApiBase = config('services.stripe.api_base')) {
        Stripe::$apiBase = $stripeApiBase;
    }
}

差不多就是这样了。现在config('services.stripe.api_base')设置后,Stripe 将使用 Mock URL 而不是 Stripes URL。

GitHub 操作

现在让我们了解如何为 GitHub Actions 设置 Stripe Mock。在 GitHub 操作.yml文件中的服务部分安装 Mock 服务器:复制复制

services:

    stripemock:
      image: stripemock/stripe-mock:latest
      ports:
        - 12111:12111

现在为测试设置环境变量。

密钥和秘密不需要是真实的,但它们需要看起来像有效的密钥。

他们必须从sk_test_复制复制

-   name: Run test suite
    env:
      STRIPE_KEY: "sk_test_4eC39HqLyjWDarjtT1zdp7dc"
      STRIPE_SECRET: "sk_test_6eC37HqLyjWDarjtT1zdp7dc"
      STRIPE_WEBHOOK_SECRET: "dummy"
      STRIPE_MONTHLY: "price_1Nb4hULiL14otffRI9TPcHo4"
      STRIPE_ANNUALLY: "price_1Nb4hULiL14otffRvPO2pt3b"
      STRIPE_API_BASE:  "localhost:12111"
    run: ./vendor/bin/pest --parallel

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值