2009-06-04 6 views
2

(SimpleTest를 통해) CakePHP에서 단위 테스트를위한 일부 조명기 데이터를 생성하려고하는데 외래 키 관계를 처리하는 방법을 모릅니다. 여기에 고정 코드 샘플 : 당신은 특수 이벤트에 외래 키를 가지고 추측 수CakePHP에서 SimpleTest를 이용한 유닛 테스팅을 위해 내 비품에서 외래 키 관계를 어떻게 처리합니까?

<?php 
class SpecialtyFixture extends CakeTestFixture { 
    var $name = "Specialty"; 
    var $import = "Specialty"; 

    var $records = array(
      array(
       'id' => '1', 
       'event_id' => '1', 
       'code' => 'endocrin-1', 
       'name' => 'Endocrinology'), 
      array(
       'id' => '2', 
       'event_id' => '1', 
       'code' => 'ent-1', 
       'name' => 'Ear, Nose and Throat') 
    ); 
} 
?> 

은, 그래서 (내 이벤트 모델은 다음과 같습니다) :

<?php 
class Event extends AppModel { 
    var $name = "Event"; 
    var $primaryKey = "id"; 

    var $hasMany = array(
      'EventLocation' => array('className' => 'EventLocation'), 
      'Faculty' => array('className' => 'Faculty'), 
      'Agenda' => array('className' => 'Agenda'), 
      'Role' => array('className' => 'Role'), 
      'Specialty' => array('className' => 'Specialty'), 
    ); 

    var $hasAndBelongsToMany = array('User'); 
} 
?> 

내가지고있어 오류를 입니다 : 내가 CakePHP의 고정 데이터에 대한 이해를 인정한다

Unexpected PHP error [<span style = "color:Red;text-align:left"><b>SQL Error:</b> 1054: Unknown column 'event_id' in 'field list'</span>] severity [E_USER_WARNING] in [/dev/trunk/cake/libs/model/datasources/dbo_source.php line 525] /dev/trunk/app/tests/cases/models/event.test.php -> EventTestCase -> endCase

이 최소 (문서 모두가 어느 정도 재탕 웹에 좀 부족 및 예제 사소한 예) 그래서 내가 할 수있는 일에 대한 아이디어가 있습니까?

답변

3

Debuggable에서 좋은 사람들이 Fixturize shell을 살펴보십시오. 데이터베이스에 데이터가 있으면이 셸을 사용하여 자동으로 조명기로 추출 할 수 있습니다. 엄청난 양의 두통을 저장합니다.

당신처럼, 설비에 대한 나의 지식은 제한되어 있지만, 데이터베이스에 단단한 것을 얻고 설비물을 추출하여 이런 종류의 고통을 피할 수있을 것이라고 생각합니다.

+0

환상적입니다! 이것은 내가 정확히 찾고자하는 것입니다 (저는 조명기에 데이터를 추출하는 편이 낫습니다). 감사합니다. – leo