使用Laravel进行测试:DatabaseTransactions或DatabaseMigrations

时间:2017-08-29 13:49:06

标签: php laravel unit-testing laravel-5 laravel-5.4

在Laravel测试中,

DatabaseTransactions特征似乎比DatabaseMigrations特征更快。这是正常的,因为每次测试DatabaseMigrations再次运行所有迁移过程(+回滚),而DatabaseTransactions只是取消最后一次事务。那么选择DatabaseTransactions特征似乎是明智的。

仍然,DatabaseMigrations确实存在。那么,使用它有什么好处(而不是使用DatabaseTransactions)?

1 个答案:

答案 0 :(得分:3)

可能存在一些优点和缺点,但对我来说,DatabaseMigrations的两个主要好处是:

1)您不需要维护测试数据库。如果您正在使用DatabaseTransactions,则需要确保您的测试数据库架构与正常的数据库架构保持同步。不难做到,只是需要追踪的额外事情。

2)使用DatabaseMigrations允许您使用内存中的SQLite DB进行测试,这比MySQL或Postgres更快,更轻量。

总的来说,我不认为有正确或错误的答案 - 我认为这只是归结为偏好。