Тестирование моделей с поведением Translate - PullRequest
1 голос
/ 07 марта 2012

В моем приложении CakePHP (2.0.1) есть следующий тестовый пример:

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

Это отлично работает и возвращает 10 записей из моего прибора.

Когда я добавляю поведение Translate в модель User, этот тест больше не работает (возвращает пустой массив).

Не уверен, как подойти к этому. Я создаю прибор I18n или отменяю поведение?

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 10 марта 2012

Как вы только что заявили, лучшим решением является создание прибора.

Отмена привязки этого поведения снизит вероятность обнаружения в ваших тестах ошибок.Моя точка зрения такова: чем дальше вы находитесь от своей производственной конфигурации, тем сложнее становится находить ошибки и причуды.

Вот мое приспособление по умолчанию для 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 из конфигурации по умолчанию, потому что у меня есть только статическое содержимое (т.е. перевод для типов, ролей).Я бы не рекомендовал делать это, если в нем хранится много пользовательского ввода.

Обратите также внимание, что вам необходимо указать имя таблицы в приборе, если вы хотите избежать попадания инфлектора. (ТакВаше имя таблицы остается "i18n", а не "i18ns")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...