首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPSpec:模拟静态方法

PHPSpec:模拟静态方法
EN

Stack Overflow用户
提问于 2013-10-30 12:51:33
回答 1查看 6K关注 0票数 0

我正在用PHPSpec测试一个类,它运行良好,直到我想为一个具有静态函数的类创建一个模拟。

我正在测试的班级:

代码语言:javascript
复制
<?php

namespace App\Service;

class PaymentService
{

    public function paymentVerification($orderId, array $data)
    {
        ...

        // Get the payment details
        $payment = \PayPal\Api\Payment::get($data['payKey'], $apiContext);

        ...
    }
}

PHPSpec类:

代码语言:javascript
复制
<?php

namespace App\Spec\Service;

use PhpSpec\ObjectBehavior;
use Prophecy\Argument;

class PaymentServiceSpec extends ObjectBehavior
{
    /**
     * @param \PayPal\API\Payment $payment
     */
    function it_should_return_false_when_the_payment_verification_failed($payment)
    {
        ...
        // This throws a PHP Fatal error:  Call to undefined method PhpSpec\Wrapper\Collaborator::get() in
        $payment::get(Argument::exact($data['payKey']), Argument::exact($apiContext))->shouldReturn(array('foobar'));

        ...

        $this->paymentVerification($orderId, $data)->shouldReturn(false);
    }
}

我如何模拟\PayPal\Api\支付::get($data‘’payKey,$apiContext);?当前,这会引发一个PHP致命错误:调用未定义的方法PhpSpec\Wrapper\Collaborator::get()

如何才能正确地做到这一点?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-01 12:05:21

你应该避免这么做。创建一个薄层,它将封装paypal库。嘲笑你自己的东西。

请参阅https://github.com/phpspec/prophecy/pull/20#issuecomment-18133965

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19682754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档