2012-03-07 60 views
1

我在我的CakePHP(2.0.1)的應用程序下面的測試案例:測試車型與翻譯行爲

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

這工作得很好,從我的夾具返回10條記錄。

當我將翻譯行爲添加到我的用戶模型時,此測試不再有效(返回空數組)。

不知道如何解決這個問題。我是否創建一個I18n夾具,或解除行爲?

任何幫助表示讚賞。

+0

因爲別人肯定會找到這個...除了文森特的指示下面;當爲''actsAs = ['Translatable']模型編寫測試時,無論使用何種模型,都必須設置**模型的$ Model-> locale ='eng''(或任何適合的代碼)你的測試。這包括當您從翻譯模型中通過另一個獲取「關聯」記錄時。你還必須在你的測試類中包含你的'app.i18n'夾具。 – beporter 2014-11-10 23:13:45

回答

2

就像你剛纔所說的,最好的解決方案是創建一個夾具。

解除此行爲將使您的測試不太可能發現錯誤。我的觀點是:你的生產配置越遠,找到缺陷和怪癖就越複雜。

這裏是國際化我的默認夾具:

<?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表中的行,因爲我只有(對於類型,角色即翻譯)在它的靜態內容。如果你有很多用戶輸入,我不會推薦你這樣做。

也請注意,您必須在夾具來指定,如果你想避免變形器在踢表名。(所以你的表名保持「國際化」,而不是「i18ns」)