使用Translate行为测试模型

时间:2012-03-07 11:27:52

标签: cakephp

我在CakePHP(2.0.1)应用程序中有以下测试用例:

<?php
public function testGetTenUsers() {
    $users = $this->User->find('all' , array('limit' => 10));
    // .... assert some things
}
?>

这很好用,并从我的灯具中返回10条记录。

当我将Translate行为添加到我的User模型时,此测试不再有效(返回空数组)。

不确定如何处理此问题。我是否创建了一个I18n夹具,或解除了这种行为?

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

正如您刚才所说,最好的解决方案是创建一个夹具。

取消绑定此行为将使您的测试不太可能捕获错误。我的观点是:你的生产配置越远,找到错误和怪癖就越复杂。

这是i18n的默认夹具:

<?php
// I'm working in CakePHP 1.3 at the moment
class I18nFixture extends CakeTestFixture {
    public $name = 'I18n';
    public $table = 'i18n';
    public $import = array(
        'table'=>'i18n', 
        'records'=>true
    );
}

我从默认配置导入了i18n表中的行,因为我只有静态内容(即类型,角色的翻译)。如果您有许多用户输入,我建议不要这样做。

另请注意,如果您想避免让导入器启动,您必须在灯具中指定表名。(因此您的表名保持&#34; i18n&#34;而不是&#34; i18ns&# 34)