आपको अपनी वस्तुओं को जारी रखने की आवश्यकता नहीं है। अच्छा तरीका यह है कि आपकी ऑब्जेक्ट जारी रहे या नहीं, यह जांचने के लिए मॉक का उपयोग करें। मैं आपको कुछ उदाहरण दूंगा।
class SomeSerivce
{
private $dm;
public function __construct(DocumentManager $dm)
{
$this->dm = $dm;
}
public function doSomeMagic($someDocument, $someValue)
{
$someDocument->setSomeValue($someValue);
$this->dm->persist($someDocument);
$this->dm->flush();
}
}
अब, आप अगर एक दस्तावेज़ वास्तव में कायम किया गया था क्योंकि यह कहीं परीक्षण किया जाता है आईडी सिद्धांत कोड की जांच नहीं करेगा: कहते हैं कि तुम एक वर्ग करते हैं। आप मान सकते हैं कि persist
और flush
विधियां ठीक काम करती हैं। जिस चीज को आप जांचना चाहते हैं वह यह है कि यदि आपका कोड इन विधियों को सही तरीके से कॉल करता है।
तो, अपने परीक्षण लग रहा है कर सकते थे जैसे:
(...)
public function testDoSomeMagic()
{
$documment = new Document();
// preapre expected object
$expectedValue = 123;
$expectedDocument = new Document();
$expectedDocument->setValue($expectedValue);
// prepare mock
$dmMock = $this->getMockBuilder('DocumentManager')
->setMethods(array('persist', 'flush'))
->disableOriginalConstructor()
->getMock();
$dmMock->expects($this->once())
->method('persist');
->with($this->equalTo($expectedDocument));
$dmMock->expects($this->once())
->method('flush');
// new we start testing with the mock
$someService = new SomeService($dmMock);
$someService->doSomeMagic($document, $expectedValue);
}
किसी भी मैं कैसे मॉडल है कि सिद्धांत ODM द्वारा कायम कर रहे हैं परीक्षण किया जाना चाहिए के लिए सबसे अच्छा अभ्यास करने के लिए संकेत की सराहना की जाएगी। मॉडल के बाद वहां बहुत कुछ नहीं लगता है। –