Tyl*_*ing 2 unit-testing laravel lumen
根据 Lumen 5.3 文档:
使用迁移
一种选择是在每次测试后回滚数据库并在下一次测试之前迁移它。Lumen 提供了一个简单的 DatabaseMigrations trait,它会自动为你处理这个问题。只需在您的测试类上使用 trait:
Run Code Online (Sandbox Code Playgroud)<?php use Laravel\Lumen\Testing\DatabaseMigrations; use Laravel\Lumen\Testing\DatabaseTransactions; class ExampleTest extends TestCase { use DatabaseMigrations; /** * A basic functional test example. * * @return void */ public function testBasicExample() { $this->get('/foo'); } }使用事务
另一种选择是将每个测试用例包装在一个数据库事务中。同样,Lumen 提供了一个方便的 DatabaseTransactions trait 来自动处理这个:
Run Code Online (Sandbox Code Playgroud)<?php use Laravel\Lumen\Testing\DatabaseMigrations; use Laravel\Lumen\Testing\DatabaseTransactions; class ExampleTest extends TestCase { use DatabaseTransactions; /** * A basic functional test example. * * @return void */ public function testBasicExample() { $this->get('/foo'); } }
如您所见,解释文本几乎相同,代码示例完全相同,除了 trait 用法。所以我很清楚,差异完全在于框架处理测试的方式。
这些有什么不同,你什么时候更喜欢一个?
如果一个区别与数据库驱动程序有关,我使用的是 MYSQL。
DatabaseMigrations 在您运行测试时迁移数据库,然后在测试完成时回滚数据库。
DatabaseTransactions使用交易。从您的数据库插入的任何数据都将在测试后回滚。
两者之间的区别是DatabaseMigrations使用迁移(迁移您的数据库迁移然后在测试后回滚它)而DatabaseTransactions使用事务(从数据库插入的数据被回滚)
来源:https : //mattstauffer.co/blog/better-integration-testing-in-laravel-5.1-databasemigrations-databasetransactions-and-withoutmiddleware
| 归档时间: |
|
| 查看次数: |
1272 次 |
| 最近记录: |