Изменение порядка @dataProvider и настройки базы данных

#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 и тестов сценариев просмотра, поскольку мне нужно было больше контроля и я хотел разделить их.