2016-07-13 39 views
5

.

... Eğer Akıcı bir arayüz kullanan test çift nesil özelleştirmek için getMockBuilder ($ tip) yöntemini kullanabilirsiniz. Bana bir örnek verebilirseniz minnettar olurdum.

Teşekkürler. Kaynaktan

cevap

5

kılavuzu https://phpunit.de/manual/current/en/test-doubles.html

createMock ($ tipi) ve getMockBuilder ($ tipi) PHPUnit tarafından sağlanan yöntem otomatik olarak bir test olarak hareket edebilir bir nesne oluşturmak için bir test kullanılabilir Belirtilen orijinal tip için çift (arayüz veya sınıf adı). Bu test çift nesnesi, orijinal türden bir nesnenin beklendiği veya gerekli olduğu her bağlamda kullanılabilir.

createMock ($ tür) yöntemi, belirtilen tür (arabirim veya sınıf) için bir test çift nesnesini hemen döndürür. Bu testin çiftinin oluşturulması, en iyi uygulama varsayılanları (__construct() ve orijinal sınıfın __clone() yöntemleri yürütülmez ve test çiftinin bir yöntemine iletilen bağımsız değişkenleri klonlamayacaktır.

bu varsayılan sonra gerekenler bir akıcı arayüzü kullanarak testi çift nesil özelleştirmek için yöntem getMockBuilder ($ tip) kullanabilirsiniz değilseniz.

zaten yığın taşması üzerine bol cevaplar akıcı arayüzler nelerdir

+0

'$ mock_service_provider = $ this-> createMock (" \ Service \ ServiceProvider ") -> yöntemi (" getService ") -> willReturn ($ service)' bu da akıcı değil mi? Yani bir benzerlik değil, bir fark. Bazı somut farklılıklar istedim, kılavuzu okudum ama henüz bir epiphanyim var ... yine de bu çok parçacığı kullanıyorum. –

+1

@ ChristianM.Raymonds Bence akıcı değil. getMockBuilder, sistemde mevcut olmayan (sistemde bulunmayan) sınıflar oluşturmak istediğinizde yararlıdır: $ this-> getMockBuilder ('SomeFunnyClassName') -> setMethods (array ('FunnyMethodName')) -> getMock(); Standart test için, createMock –

+0

'u kullanmak istiyorsunuz. Peki, bana yardım etme çabalarınızı takdir ediyorum, ama sanırım akıcılığını yanlış anladınız. –

8

createMock ($ tip) içten getMockBuilder() kullanır:

protected function createMock($originalClassName) 
{ 
    return $this->getMockBuilder($originalClassName) 
       ->disableOriginalConstructor() 
       ->disableOriginalClone() 
       ->disableArgumentCloning() 
       ->disallowMockingUnknownTypes() 
       ->getMock(); 
} 

Yani createMock() yöntem size genel en iyi uygulama varsayılan ile inşa bir taklidini dönecektir.

getMockBuilder ($ türünde) ile kendi gereksinimlerinizi içeren bir alay oluşturabilirsiniz.