Я пишу множество модельных испытаний в CakePHP (PHPUnit)CakePHP UnitTest метод, который вызывает другую модель
В TravisCI, я получаю что-то вроде: «Base таблицы или просмотреть не найден: тест 1146 Table». события в тестовом бегуне Cake, я получаю отказ утверждения
проблемы я имею есть методы в моих ModelClasses, что я пытаюсь проверить называющие другие модели с App :: использованиями Например:..
Метод по модели пользователя:
public function getOtherData() {
App::uses('Event', 'Model');
$this->Event = new Event;
return $this->Event->find('all');
}
И тест:
public function testGetOtherData() {
$result = $this->User->getOtherData();
$this->assertTrue(!empty($result));
}
Обратите внимание на приведенный выше пример только что. Пример, упрощенный, чтобы показать проблему. Я понимаю, что в приведенном выше примере есть лучшие способы «сделать торт».
Кроме того, я использую определение необходимых светильников, и они отлично работают. (Я знаю это другим способом в модели, которая использует соединение в поиске, а не App :: Uses())
EDIT: Код при запуске работает, НО UnitTest ищет другие модели данных (При использовании App :: uses) в базе данных по умолчанию, а не в тестовой базе данных. Почему он не использует тестовую базу данных? Я что-то упускаю?
ПОСЛЕДНЕГО ПРИМЕЧАНИЕ
Использование App :: использование(), а затем инстанцирование класса будет работать во время выполнения. Но во время тестирования он будет терпеть неудачу, поскольку он пытается использовать соединение с базой данных по умолчанию вместо соединения с тестовой базой данных.
За выбранный ответ, а не использование App :: uses, Cakes, встроенный в реестр классов, ClassRegistry::init('Model', true);
, вы можете включить модель из другого метода модели.
Вы уверены, что свойство $ useDbConfig не задано в вашей модели? –
Я уверен, @ joshua.paling спасибо :) – alairock