Из коробки CakePHP 1.x имеет источник данных default
и test
. При запуске модульных тестов он использует тестовую базу данных и перед каждым тестом может фиксировать данные из кода или импортировать данные из базы данных по умолчанию.
В приложении, которое я создаю, у меня есть пара случаев, когда было бы полезно указать в некоторых моделях приборов базу данных, отличную от test
:
- источником данных является веб-служба, и возвращенные данные не могут быть легко реплицированы с тестовой базой данных,
- существуют большие таблицы только для чтения, и очень медленно (и не нужно) воссоздавать все эти данные перед каждым тестом.
Я посмотрел на CakeTestFixture
, но пока не вижу хорошего способа сделать это. Возможно, каждая модель действительно хочет иметь свойство useDbConfig
и useTestConfig
?
В некоторых случаях я могу обойти это, сделав что-то вроде:
function startTest() {
$this->Flock =& ClassRegistry::init('Flock');
$this->Flock->Sheep->useDbConfig = 'readonly_db';
$this->Flock->Dog->useDbConfig = 'soap';
}
Но это будет охватывать только определенные зависимости для одного тестового случая, и выполнение этого через набор тестов будет кошмаром обслуживания.
Кто-нибудь сталкивался с подобной ситуацией и было ли у вас решение?