在Laravel / PHPunit测试类中,我向该类添加了use RefreshDatabase
,我知道应该这样做,以便在测试完成时恢复对测试期间数据库的更改。
但是,每当我在该类中运行测试时,数据库中的所有表都会被删除,并且测试失败(因为这些表不存在!)。
文档建议,在测试后让数据库还原就像我添加一行一样简单,我遗漏了什么吗?
答案 0 :(得分:0)
如果您不想使用RefreshDatabase擦除和重建数据库,则只需使用DatabaseTransactions特性即可。这将回滚测试过程中所做的任何更改。
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ExampleTest extends TestCase
{
use DatabaseTransactions;
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$this->assertTrue(true);
}
}
答案 1 :(得分:0)
更新您的phpunit.xml
并添加这两行
<server name="DB_CONNECTION" value="sqlite"/>
<server name="DB_DATABASE" value=":memory:"/>