2013-04-16 7 views
6

मैं मॉकरी को यह कहने की कोशिश कर रहा हूं कि एक दी गई विधि को कम से कम एक बार बुलाया जाता है।मॉकरी कंधे() -> एक बार() काम नहीं लग रहा है

मेरा परीक्षण वर्ग है:

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

} 

जैसा कि आप देख सकते हैं, वहाँ एक परीक्षण है कि (उम्मीद) एक उम्मीद है कि setUri बुलाया जाएगा पैदा करता है। चूंकि इसमें कोई अन्य कोड शामिल नहीं है, इसलिए मैं कल्पना नहीं कर सकता कि कहलाया जा सकता है और फिर भी मेरा परीक्षण गुजरता है। क्या कोई समझा सकता है क्यों?

उत्तर

38

आपको अपनी उम्मीदों के लिए सत्यापन चलाने के लिए Mockery:close() पर कॉल करने की आवश्यकता है। यह अगले टेस्टकेस के लिए मॉकरी कंटेनर की सफाई को भी संभालता है।

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

हर परीक्षण वर्ग में करीब विधि कॉल करने से बचने के लिए, तो आप सिर्फ TestListener अपने PHPUnit config के लिए इतना की तरह जोड़ सकते हैं:

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

यह दृष्टिकोण docs से समझाया गया है। जुड़ा हुआ डॉक्स से नोट करने के लिए

एक बात है:

यकीन है कि संगीतकार के बनाओ या मजाक के autoloader बूटस्ट्रैप फ़ाइल में मौजूद है या आप भी एक "फ़ाइल" विशेषता ऊपर TestListener की फ़ाइल की ओर इशारा करते परिभाषित करने की आवश्यकता होगी कक्षा।

संबंधित मुद्दे