【问题标题】:Testing with Laravel: DatabaseTransactions or DatabaseMigrations使用 Laravel 进行测试:DatabaseTransactions 或 DatabaseMigrations
【发布时间】:2017-08-29 13:49:06
【问题描述】:
DatabaseTransactions trait 在 Laravel 测试中似乎比 DatabaseMigrations trait 更快。这很正常,因为对于每个测试DatabaseMigrations 再次运行所有迁移过程(+回滚),而DatabaseTransactions 只是取消最后一个事务。那么选择DatabaseTransactions trait 似乎是明智的。
不过,DatabaseMigrations 确实存在。那么,使用它有什么好处(而不是使用DatabaseTransactions)?
【问题讨论】:
标签:
php
laravel
unit-testing
laravel-5
laravel-5.4
【解决方案1】:
可能有许多优点和缺点,但对我而言,DatabaseMigrations 的两个主要优点是:
1) 您不需要维护测试数据库。如果您使用 DatabaseTransactions,您需要确保您的测试数据库架构与您的正常数据库架构是最新的。做起来并不难,只是需要跟踪一个额外的事情。
2) 使用 DatabaseMigrations 允许您使用内存中的 SQLite DB 进行测试,这比 MySQL 或 Postgres 更快、更轻量级。
总的来说,我认为没有正确或错误的答案 - 我认为这取决于偏好。