#phpunit #zend-db
#phpunit #zend-db
Вопрос:
Итак, платформа баз данных phpunit от Zend позволяет предварительно загружать базу данных таблицами. Однако это мешает мне использовать @dataProvider с базой данных, потому что кажется, что @dataProvider выполняется до того, как zend перезагрузит базу данных. Это приводит к несинхронизации таблиц базы данных.
Есть ли способ изменить эту процедуру так, чтобы zend перезагружал базу данных, после чего вызывался @dataProvider?
Ответ №1:
Когда Zend загружает вашу базу данных? Если вы вызываете его специально из setUp()
, вы могли бы переместить вызов в метод поставщика данных. Это не идеально, но способ, которым PHPUnit вызывает поставщиков данных, является основой его архитектуры. Себастьян планирует переработать это в какой-то момент, но я не знаю, насколько это высоко в списке приоритетов.
Редактировать: Себастьян создал заявку, в которой обсуждается изменение порядка тестов на основе @depends
— не изменяется при вызове поставщиков данных. Приношу свои извинения за путаницу.
Комментарии:
1. Zend расширяет тестовый пример базы данных и перезаписывает этот метод: ` защищенная функция getSetUpOperation() { возвращает новый PHPUnit_Extensions_Database_Operation_Composite(массив( новый Zend_Test_PHPUnit_Db_Operation_Truncate(), новый Zend_Test_PHPUnit_Db_Operation_Insert(), )); } `
2. @Ray H — Этот метод, вероятно, вызывается из
setUp()
, что означает, что вы застряли. Вы могли бы скопировать и изменить класс тестового примера Zend вместо его расширения и поручить методам поставщика данных выполнять настройку данных. Это то, что я сделал для нашего контроллера Zend и тестов сценариев просмотра, поскольку мне нужно было больше контроля и я хотел разделить их.