2016-07-06 38 views
0

我正在爲我用Stripe建立的支付平臺編寫單元和集成測試,並且需要使用嘲笑模擬客戶對象,不幸的是,當我打了一下牆的時候試圖用連接的卡對象創建一個Stripe客戶。用連接卡嘲笑條紋客戶服務

這樣做的最好方法是什麼?

+1

請給出你試過的東西,以及結果是什麼。 – Jeff

+0

我已經回答了我自己的問題,答案很簡單! –

回答

0

因爲我張貼了這個問題,我意識到,我已經創建了一個服務抽象條紋的功能,正因爲如此,我可以簡單地擴展這些功能包括createCardupdateCardretrieveCarddeleteCard方法:

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