Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel中的条纹测试_Php_Laravel_Unit Testing_Stripe Payments - Fatal编程技术网

Php Laravel中的条纹测试

Php Laravel中的条纹测试,php,laravel,unit-testing,stripe-payments,Php,Laravel,Unit Testing,Stripe Payments,我正在Laravel创建一个基于订阅的SaaS平台,Laravel出纳不适合我的需要。因此,我需要使用条带库自己实现订阅引擎 我发现,通过挂钩订阅类的创建和删除事件,然后相应地创建或取消条带订阅,很容易实现Laravel和Stripe之间的连接 不幸的是,条带库主要基于对某些预定义类调用静态方法(…如\Stripe\Charge::create()) 这使得我很难进行测试,因为您通常会允许对某些自定义客户端进行依赖注入以进行模拟,但由于条带库是静态引用的,因此没有要注入的客户端。有没有办法创建一

我正在Laravel创建一个基于订阅的SaaS平台,Laravel出纳不适合我的需要。因此,我需要使用条带库自己实现订阅引擎

我发现,通过挂钩
订阅
类的创建和删除事件,然后相应地创建或取消条带订阅,很容易实现Laravel和Stripe之间的连接

不幸的是,条带库主要基于对某些预定义类调用静态方法(…如
\Stripe\Charge::create()

这使得我很难进行测试,因为您通常会允许对某些自定义客户端进行依赖注入以进行模拟,但由于条带库是静态引用的,因此没有要注入的客户端。有没有办法创建一个Stripe客户端类之类的,我可以模仿它呢?

您好,来自未来

我只是在钻研这个。所有这些类都是从Stripe的
ApiResource
类扩展而来,继续挖掘,您会发现当库即将发出HTTP请求时,它会调用
$this->httpClient()
httpClient
方法返回对名为
$\u httpClient
的变量的静态引用。方便的是,Stripe
APIRestor
类上还有一个名为
setHttpClient
的静态方法,它接受一个对象,该对象应该实现Stripe
HttpClient\ClientInterface
(该接口只描述了一个名为
request
的方法)

所以,在您的测试中,您可以调用
ApiRequestor::setHttpClient
将您自己的http客户端模拟的实例传递给它。然后,每当Stripe发出HTTP请求时,它都会使用您的模拟,而不是默认的
CurlClient
。您的责任是让您的模拟返回得到格式良好的响应,您的应用程序将不会变得更明智

下面是我在测试中开始使用的一个非常愚蠢的假货:


stripe php
库经过了很好的测试,也许可以检查一下如何帮助您感谢您的输入。我的问题是测试我是否使用正确的参数调用了Stripe库,而不是测试与Stripe API本身的连接。您可以在它上面放置一个库,并以这种方式进行测试,因为库本身已经过测试。也许这是你的选择?