使用附加卡模拟Stripe客户服务

时间:2016-07-06 13:04:52

标签: php stripe-payments mockery

我正在为支付平台编写单元和集成测试我正在使用Stripe构建并需要使用Mockery来模拟客户对象,不幸的是我在尝试时遇到了一些问题。使用附加的Card对象创建Stripe客户。

最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

自从我发布这个问题以来,我意识到我已经创建了一个抽象条带功能的服务,因此,我可以简单地扩展该功能以包含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::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);
    });
});