2015-05-14 133 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); 

唯一重要的是你的服务调用所有必要的方法与预期的参数。 我认为这是一个很好的方向。

相关问题