Это поздний ответ, но он все еще может быть полезен некоторым людям, я думаю ...
Вы можете сделать это, вызвав execute
метод IDatabaseOperation
, который вы можете получить из PHPUnit_Extensions_Database_Operation_Factory
.В основном вы бы использовали CLEAN_INSERT
или INSERT
.
В качестве второго подхода zerkms , вы бы назвали его в начале каждого теста, который требует определенных данных.Например:
public function testA() {
PHPUnit_Extensions_Database_Operation_Factory::INSERT()
->execute($this->getConnection(), $this->createXMLDataSet(__DIR__.'/fixtureA.xml'));
// Test code
}
Однако преимущество этого решения заключается в том, что набор данных всего контрольного примера остается неизменным, поэтому:
- Методы испытаний остаются независимыми друг от друга (тогда как в подходе zerkms, если вы не забудете / не забудете указать набор данных в другом методе тестирования, он будет повторно использовать набор данных из предыдущего (случайного?) метода, который изменилнабор данных, который довольно уродлив и очень подвержен ошибкам ИМХО).Здесь любой другой тест без такого вызова в его начале будет просто использовать набор данных тестового набора как обычно.
- Вы можете построить свой тестовый набор данных поверх общего набора (тестового набора) .Если вы используете операцию
INSERT
(не CLEAN_INSERT
), она вставит строки, специфичные для теста, после всех строк из общего набора данных.Вы также можете использовать операцию DELETE
, чтобы удалить некоторые нежелательные строки из этого общего набора данных. - Кстати, не вызывая
onSetUp()
, это делает эту работу, даже если операция настройки тестового примера была изменена.