我正在使用 Symfony 和 Doctrine 开发一个项目,但我的测试有问题。我正在使用 Fixtures 为测试加载数据,并且我的一些实体之间存在关联。我第一次使用空数据库表运行测试时,测试完美地成功。但是当我再次运行测试时,我得到了一个错误:
Doctrine\DBAL\DBALException:执行“DELETE FROM Ent”时发生异常:
SQLSTATE [23000]:完整性约束违规:1451 无法删除或更新父行:外键约束失败(
my_db
.Ent
, CONSTRAINTFK_FE5D1D1E727ACA70
FOREIGN KEY (parent_id
) REFERENCESEnt
(id
))
错误的原因很明显:当另一行通过外键引用它时,无法删除该行。
如果我首先手动截断禁用外键约束的表并使用空表再次运行测试,则测试再次成功。但是每次运行测试时我都必须重复这一点。
所以问题是:有没有办法让 Symfony 或 PHPUnit 自动处理这个问题?
谢谢!
编辑:我忘了提到我正在使用 Liip\FunctionalTestBundle\Test\WebTestCase 类。