【问题标题】:Mocking the Stripe Customer service with attached Cards用附加的卡片模拟 Stripe 客户服务
【发布时间】:2016-11-08 13:12:20
【问题描述】:

我正在为使用 Stripe 构建的支付平台编写单元和集成测试,需要使用 Mockery 模拟客户对象,不幸的是,我在尝试使用附加 Card 对象。

最好的方法是什么?

【问题讨论】:

  • 请展示您尝试过的东西,以及结果如何。
  • 我已经回答了我自己的问题,答案很简单!

标签: php stripe-payments mockery


【解决方案1】:

自从我发布这个问题后,我意识到我已经创建了一个服务来抽象 Stripe 功能,因此,我可以简单地扩展该功能以包含 createCard updateCard retrieveCarddeleteCard 方法:

class StripeService implements StripeServiceContract
{
    public function createCard(Stripe\Customer $customer, $source, $default = true)
    {
        $source = $customer->sources->create(compact('source'));
        if ($default) {
            $customer->default_source = $source->id;
            $customer->save();
        }
        return $source;
    }

    public function retrieveDefaultCard(Stripe\Customer $customer)
    {
        return $customer->sources->retrieve($customer->default_source);
    }
}

然后我可以使用 mockery 来模拟这个:

Mockery::mock(StripeServiceContract::class, function (MockInterface $mock) {
    $mock->shouldReceive('createCard')->andReturnUsing(function ($customer, $id, $default) {
        return new Stripe\Card($id);
    });
    $mock->shouldReceive('retrieveCard')->andReturnUsing(function ($id) {
        return new Stripe\Card($id);
    });
});

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 2018-03-04
    • 2019-03-03
    • 2021-07-04
    • 2017-03-13
    • 2017-12-24
    • 2017-02-02
    • 2021-01-31
    • 2019-10-28
    相关资源
    最近更新 更多