원래 클래스를 사용하는 다른 테스트에서 문제가 발생하고, 모두가 좋았다 :나는 다음과 같은 시험을 시작
class Search_IndexController_FulltextActionTest extends PHPUnit_Framework_TestCase
{
public function testQueryNoResults() {
$mapper = $this->getMockBuilder("Search_Model_Mapper_Search")
->disableOriginalConstructor()
->setMethods(array("find", "count"))
->getMock();
}
:
class Search_Model_Mapper_Search_GetDbTableTest extends PHPUnit_Framework_TestCase
{
public function testGetDbTable()
{
$mapper = new Search_Model_Mapper_Search();
$dbClass = new ReflectionClass($mapper->getDbTable('Search_Model_DbTable_Search'));
$this->assertEquals('Search_Model_DbTable_Search', $dbClass->getName());
}
}
다음, 나는 다른 곳에서 다른 테스트를 추가
그리고 치명적인 오류가 발생했습니다. Call to undefined method Search_Model_Mapper_Search::getDbTable()
원래의 테스트에서 Reflection을 사용하여 Search_Model_Mapper_Search 클래스가 정의 된 파일을 찾았습니다. phar:///usr/local/bin/phpunit/phpunit-mock-objects/Framework/MockObject/Generator.php(335) : eval()'d code
, 그리고 반사 된 클래스에 getMethods를 호출하면 빈 배열이 생깁니다.
클래스를 모의 테스트하는 것을 건너 뛰거나 삭제하면 원래 테스트에서 getMethods를 호출 할 때 전체 메서드 목록을 얻을 수 있습니다.
각 테스트가 정상적으로 실행되지 않았는지, 아니면 PHPUnit 및/또는 PHPUnit 모의 객체의 버그입니까?
나는의 Phar 원래 클래스를 조롱하기 전에로드 (또는 자동으로 적재)되지 않기 때문에 일반적으로 발생
하, 그래 - 터널 비전을 깨뜨린 덕분에 – HorusKol