php – 如何为使用Braintree和静态方法调用的端点编写集成测试
作者:互联网
我正在使用严重依赖静态方法的Braintree PHP客户端.
我在项目中的所有端点都包含集成测试
就像是:
Storage::shouldReceive('put')->once()->andReturn(true);
$this->post('/api/payment');
正如你所看到的,我也在使用Mockery来创建模拟.但是,由于Braintree库严重依赖静态方法,我无法创建方法,因此无法测试这些端点.
这是使用Braintree PHP客户端编写的代码示例:
$result = Braintree\Transaction::sale([
'amount' => '1000.00',
'paymentMethodNonce' => 'nonceFromTheClient',
'options' => [ 'submitForSettlement' => true ]
]);
我有什么选择?
解决方法:
this answer只有你有嘲弄才能工作1. *已安装..早期版本不会做静态方法嘲笑.以下代码有效:
$brainTreeMock = Mockery::mock('alias:Braintree_Transaction');
$transaction = (object)[ 'id' => str_random(5) ];
$brainTreeMock->shouldReceive('sale')->andReturn((object)[
'success' => true,
'transaction' => $transaction
]
);
标签:braintree,php,integration-testing,mockery 来源: https://codeday.me/bug/20190727/1556038.html