如何使用CakePHP中的SimpleTest处理我的灯具中的外键关系进行单元测试?

时间:2009-06-04 15:07:37

标签: cakephp foreign-keys fixtures simpletest

我正在尝试为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')
    );
}
?>

所以,你可以猜测,Specialty有一个事件的外键(我的事件模型看起来像这样):

<?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');
}
?>

我得到的错误是:

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

我承认我对CakePHP夹具数据的理解很少(文档有点稀缺,网上的例子都有些琐碎的例子)所以我可以/应该做什么的想法?

1 个答案:

答案 0 :(得分:3)

看看Debuggable上好人们的Fixturize shell。在数据库中有数据后,可以使用此shell自动将其提取到fixture中。挽救了很多头痛。

和你一样,我对灯具的了解有限,但我认为你可以通过在你的数据库中获得可靠的东西并将其提取到灯具中来避免这种痛苦。