2013-04-16 12 views
6

Mockery, belirli bir yöntemin en az bir kez çağrıldığını iddia etmeye çalışıyorum.Mockery shouldReceive() -> bir kez() görünmüyor

Testim sınıftır: Gördüğünüz gibi

use \Mockery as m; 

class MyTest extends \PHPUnit_Framework_TestCase 
{ 

    public function testSetUriIsCalled() 
    { 
     $uri = 'http://localhost'; 
     $httpClient = m::mock('Zend\Http\Client'); 
     $httpClient->shouldReceive('setUri')->with($uri)->atLeast()->once(); 
    } 

} 

, (umarım) setUri adı verilecek bir beklenti yarattığını bir test var. Başka bir kod bulunmadığından, 'un'un çağrılabileceğini ve testimin geçtiğini düşünemiyorum. Nedenini açıklayan var mı?

cevap

38

Beklentilerinizi doğrulamak için Mockery:close() numaralı telefonu aramanız gerekir. Ayrıca bir sonraki test çantası için alay konteynerinin temizliğini de ele alır.

public function tearDown() 
{ 
    parent::tearDown(); 
    m::close(); 
} 
2

her deney sınıfında yakın yöntemi çağırmak zorunda kalmamak için, sadece bu yüzden gibi PHPUnit config TestListener ekleyebilirsiniz:

<listeners> 
    <listener class="\Mockery\Adapter\Phpunit\TestListener"></listener> 
</listeners> 

Bu yaklaşım docs açıklanmıştır. bağlantılı dokümanlardan nota

Bir şey şudur:

emin Besteci en olun veya alay konusu olur autoloader önyükleme dosyasında mevcut olduğu ya da bir “dosya” özniteliği yukarıdaki TestListener ait dosyayı işaret tanımlamak gerekecektir sınıf.