使用 Laravel 进行测试:DatabaseTransactions 或 DatabaseMigrations

rap*_*2-h 2 php unit-testing laravel laravel-5 laravel-5.4

DatabaseTransactionsDatabaseMigrations在 Laravel 测试中,trait 似乎比trait更快。这是正常的,因为每次测试DatabaseMigrations都会再次运行所有迁移过程(+回滚),并且DatabaseTransactions只是取消最后一个事务。DatabaseTransactions那么选择特质似乎是明智的。

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

jac*_*414 5

可能有许多优点和缺点,但对我来说,DatabaseMigrations 的两个主要好处是:

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

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

总的来说,我认为没有正确或错误的答案 - 我认为这只是取决于偏好。