2015-05-14 82 views
1

我已經完成了對控制器的測試,並嘲笑了服務中的方法。我現在想測試服務方法。我在網上搜索,但沒有遇到好的文章。如果有任何指針,鏈接等等。對於PHPunit測試服務,在zend框架2中將是理想的。如何使用PHPunit和Zend Framework測試服務2

到目前爲止,我已經試過這樣:

public function testFindInternById() 
{ 
    $intern = new \Intern\Entity\InternEntity(); 
    $intern->setId(123); 
    $intern->setFirstName('David'); 
    $intern->setLastName('Random'); 
    $intern->setTertiaryInstitute('UCT'); 
    $intern->setEducationalFeedback('educationalFeedback'); 
    $intern->setStartDate('2015-05-01'); 
    $intern->setEndDate('2015-05-02'); 
    $intern->setEmail('[email protected]'); 
    $intern->setCv('4f7ae9d402168b5949cfda6deeee6620emir4.pdf'); 
    $intern->setCvRating(0); 
    $intern->setProfilePicture('random.jpg'); 
    $intern->setInternshipRole('QA'); 
    $intern->setWebsite('www.random.com'); 
    $intern->setContactNumber('(123)-213-3434'); 
    $intern->setCurrentLocation('Mars'); 

    $emMock = $this->getMock('EntityManager', array('getRepository', 'getClassMetadata', 'persist', 'flush', 'find'), array(), '', false); 
    $emMock->expects($this->any()) 
      ->method('find') 
      ->will($this->returnValue($intern)); 

    $internService = new \Intern\Service\Intern\InternService(); 
    $internService->removeIntern($intern);  
} 

一些方法有沒有回報,所以如果他們被訪問,在代碼覆蓋率術語「我想看到綠色寶貝」我也只是測試。所以你們的任何提示都會很感激。

回答

0

我只是想提一下,如果您有ZF2或任何其他框架或自定義代碼,則無關緊要。你沒有測試框架,但你的代碼。

假設你想測試你能夠移除一名實習生。比你的服務需要依賴倉庫。

$internId = 1; 

$repositoryMock = $this->getMockBuilder('\RepositoryClass')->disableOriginalConstructor()->setMethods(array('findOnyById', 'delete')); 

$repositoryMock->expects($this->once())->method('findOnyById')->with($internId)->willReturn($internMock); 
$repositoryMock->expects($this->once())->method('delete')->with($internId); 

$internMock = $this->getMockBuilder('\Intern\Entity\InternEntity')->disableOriginalConstructor()->getMock(); 

$internService = new \Intern\Service\Intern\InternService($repositoryMock); 
$internService->removeIntern($internId); 

唯一重要的是你的服務調用所有必要的方法與預期的參數。 我認爲這是一個很好的方向。

相關問題