Не ожидая слишком много похвалы за этот ответ, но я потратил несколько часов, пытаясь выяснить, почему одна из моих таблиц тестовой базы данных не усекалась, вызывая ту же ошибку повторяющегося ввода, описанную выше.Мой getDataSet () выглядел как
function getDataSet() {
$files = array('languages','interpreters','interp_languages',
'interp_events','deft_events',
//etc
);
$dataSets = array();
foreach ($files as $file) {
$dataSets[] = new PHPUnit_Extensions_Database_DataSet_MysqlXmlDataSet(
$this->files_dir."/$file.xml");
}
return new PHPUnit_Extensions_Database_DataSet_CompositeDataSet($dataSets);
}
, и техника отлично работала на других тестовых классах.Бывает, что я случайно пропустил одно из моих имен файлов данных xml из $ files, , поэтому DbUnit не загружал этот файл данных, поэтому не усекал таблицу.Но поскольку в таблице осталось много строк из других тестов, в которых использовался тот же файл данных, для меня не было очевидным, что происходит.
Надеюсь, это спасет кого-то еще от разрыва ее /его глаза когда-нибудь выпадут.