Bạn không phải tiếp tục tồn tại các đối tượng của mình. Cách tốt là sử dụng mô phỏng để kiểm tra xem đối tượng của bạn có được tiếp tục không. Tôi sẽ cho bạn một số ví dụ. Giả sử bạn có một lớp học:
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();
}
}
Bây giờ, bạn sẽ không kiểm tra xem liệu tài liệu có thực sự tồn tại vì điều này được kiểm tra ở đâu đó id Mã giáo lý hay không. Bạn có thể giả định rằng các phương thức persist
và flush
hoạt động tốt. Điều bạn muốn kiểm tra là mã của bạn có gọi chính xác các phương thức này hay không.
Vì vậy, thử nghiệm của bạn có thể trông giống như:
(...)
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);
}
Bất kỳ con trỏ để thực hành tốt nhất cho làm thế nào tôi nên thử nghiệm các mô hình đó được tiếp tục tồn bởi Học thuyết ODM sẽ được đánh giá cao. Dường như không có nhiều thứ để mô hình sau đó. –