2013-03-20 2 views
2

테스트 할 DB 어댑터를 사용하는 모델이 있습니다. DB 어댑터의 생성자는 모든 DB 연결을 처리하므로 테스트 중에는 피하고 싶습니다. 그렇지 않으면 db pass/db username과 관련하여 오류가 반환됩니다.disableOriginalConstructor() and will() conflict

내가 현재 실행중인 코드는 아래에서 볼 수 있듯이 disableOriginalConstructor()을 사용하여 생성자를 호출하지 못하게합니다. PHPUnit_Framework_MockObject_Builder_InvocationMocker에 전달

인수 1 : (가) 인터페이스 PHPUnit_Framework_MockObject_Stub를 구현해야합니다 의 예를 :

문제는 내가 $mysql_stubwill()에서 사용하려고하면 나는이 오류를 얻고 있다는 것입니다 Mock_Pages_MySQL_Page_46612429 라인 185 /Applications/MAMP/htdocs/lib/Pages/trunk/Tests/Unit/PageTest.php 호출 주어와

정의3210

누군가가 조언 할 수 있습니까? 올바른 구문은 무엇입니까?

class Page { 

    public function getByUrl($url) 
    { 
     $db_page = $this->getDAOInterface(); 
     $db_page->getByUrl($url); 
     $this->assign($db_page); 
     return $this; 
    } 

} 

class PageTest extends PHPUnit_Framework_TestCase 
{ 
    public function testGetByUrl() 
    { 
     $test_url = "foo-bar"; 
     $page_stub = $this->getMock(
      'Pages_Model_Page', 
      array('getDAOInterface', 'assign') 
    ); 

     $mysql_stub = $this->getMockBuilder('Pages_MySQL_Page') 
         ->setMethods(array('getByUrl')) 
         ->disableOriginalConstructor() 
         ->getMock(); 

     $mysql_stub->expects($this->once()) 
       ->method('getByUrl') 
       ->with($this->equalTo($test_url)); 

     $page_stub->expects($this->once()) 
       ->method('getDAOInterface') 
       ->with() 
       ->will($mysql_stub); 

     $page_stub->expects($this->once()) 
       ->method('assign') 
       ->with($mysql_stub); 

     $page_stub->geByUrl($test_url); 
    } 
} 

답변

5

마지막으로 잘못된 점을 알아 냈습니다. 오류는 내 부분에 누락으로 인해 발생했습니다. 유언장은 다음과 같이 호출해야합니다.

$page_stub->expects($this->once()) 
      ->method('getDAOInterface') 
      ->with() 
      ->will($this->returnValue($mysql_stub));