2011-04-13 3 views
0

Zend의 phpunit 데이터베이스 프레임 워크를 사용하면 테이블이있는 데이터베이스를 미리로드 할 수 있습니다. 그러나 zend가 데이터베이스를 다시로드하기 전에 @dataProvider가 실행되기 때문에 데이터베이스에서 @dataProvider를 사용하지 못하게됩니다. 이로 인해 데이터베이스 테이블이 동기화되지 않습니다.@dataProvider 및 데이터베이스 설정의 순서 재 지정

zend가 데이터베이스를 다시로드하도록이 절차를 재정렬하는 방법이 있습니까? 그러면 @dataProvider가 호출됩니다.

답변

1

언제 Zend가 데이터베이스를로드합니까? setUp()에서 구체적으로 호출하면 데이터 공급자 메서드로 호출을 이동할 수 있습니다. 이상적인 것은 아니지만 PHPUnit이 데이터 공급자를 호출하는 방식은 아키텍처의 핵심입니다. 세바스찬은 이것을 약간의 시점으로 재구성 할 계획이지만, 우선 순위 목록에 얼마나 많은 점수가 있는지 모르겠습니다.

편집 : Sebastian은 @depends을 기반으로하는 재정렬 테스트에 대해 설명하는 티켓을 만들었지 만 데이터 제공 업체를 호출 할 때 변경되지 않았습니다. 혼란에 대한 사과.

+0

젠드 데이터베이스 테스트 케이스를 확장하고,이 방법 덮어 : ' 보호 기능 getSetUpOperation() {새로운 PHPUnit_Extensions_Database_Operation_Composite를 반환 (어레이 ( 새로운 Zend_Test_PHPUnit_Db_Operation_Truncate() 새로운 Zend_Test_PHPUnit_Db_Operation_Insert() 을)); } ' –

+0

@Ray H - 그 방법은 아마도'setUp()'에서 호출됩니다. Zend의 테스트 케이스 클래스를 확장 및 복사하는 대신 복사하고 수정할 수 있으며 데이터 공급자 메소드에서 데이터 설정을 수행 할 수 있습니다. 이것은 내가 Zend 컨트롤러와 스크립트 테스트를 위해 더 많은 컨트롤이 필요하고이를 분리하기를 원했던 것입니다. –