2013-10-30 89 views
0

我正在測試一個類的PHPSpec,這很好,直到我想創建一個具有靜態函數的類的模擬。PHPSpec:模擬靜態方法

類我測試:

<?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類:

<?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); 
    } 
} 

我怎麼能嘲笑\貝寶\阿比\付款::得到($數據[ 'payKey'],$ APICONTEXT); ? 目前這拋出一個PHP致命錯誤:調用未定義的方法PhpSpec \ Wrapper \ Collaborator :: get()

這怎麼能正確完成?提前致謝!

+0

已覆蓋[這裏](http://stackoverflow.com/questions/2357001/phpunit-mock-objects-and-static-methods9) – max

+1

@papirtiger沒有T還沒有。目前的問題是關於phpspec,而不是phpunit。 –

回答