Задать вопрос
anonimizer_me
@anonimizer_me

Сброс состояния базы перед тестом?

Здравствуйте! Столкнулся с такой проблемой.

Тесты меняют значния в базе, а фикстуры накатываются только один раз. Из-за этого в некоторых тестах я получаю не те значения, которые ожидаю — из-за того, что какой-то другой тест изменил значение в таблице.



Как перед каждым тестом накатывать фикстуры?
  • Вопрос задан
  • 3434 просмотра
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
@kirksa
Используйте phpunit database extension (PHPUnit_Extensions_Database_TestCase).
БД будет устанавливаться (данные) из фикстур для каждого теста.
Ответ написан
Комментировать
akral
@akral
Ответ написан
Комментировать
sirko_el
@sirko_el
Поищите описание Continuous Integration для Yii.
Вот как пример: Continuous Integration Part I
Ответ написан
Комментировать
Используйте отдельную БД под тесты, если тесты не интеграционные. Для каждого кейса генерировать свой набор тестовых данных.
Ответ написан
Комментировать
@kraut
как вариант, в тесте подменять basePath директорию, из которой берутся фикстуры:
public function setUp(){
	$sOldBasePath = $this->getFixtureManager()->basePath;
	$this->getFixtureManager()->basePath = Yii::getPathOfAlias( 'application.tests.fixtures.' . __CLASS__ );
	parent::setUp();
	$this->getFixtureManager()->basePath = $sOldBasePath;
}

ну и соответственно складывать фикстуры для каждого теста в отдельную папку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы