使用Phpunit /为什么phpunit删除数据库中的所有数据

时间:2019-01-10 05:31:51

标签: laravel phpunit

我试图测试我的功能,但是每次我尝试运行phpunit时,它将删除表中的所有记录。我已经设置了phpunit.xml文件,仅在测试数据库中,就按照文档中的所有内容进行了操作,是否必须在我的计算机上设置sqlite,因为我没有该文件?还是什么 ?我只安装了laragon和phpmyadmin。

phpunit.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
   backupStaticAttributes="false"
   bootstrap="vendor/autoload.php"
   colors="true"
   convertErrorsToExceptions="true"
   convertNoticesToExceptions="true"
   convertWarningsToExceptions="true"
   processIsolation="false"
   stopOnFailure="false">
   <testsuites>
    <testsuite name="Feature">
        <directory suffix="Test.php">./tests/Feature</directory>
    </testsuite>

    <testsuite name="Unit">
        <directory suffix="Test.php">./tests/Unit</directory>
    </testsuite>
</testsuites>
<filter>
    <whitelist processUncoveredFilesFromWhitelist="true">
        <directory suffix=".php">./app</directory>
    </whitelist>
</filter>
<php>
    <env name="APP_ENV" value="testing"/>
    <env name="CACHE_DRIVER" value="array"/> 
    <env name="SESSION_DRIVER" value="array"/>
    <env name="QUEUE_DRIVER" value="sync"/>
    <env name="DB_CONNECTION" value="sqlite"/>
    <env name="DB_DATABASE" value=":memory:"/>
</php>
</phpunit>

1 个答案:

答案 0 :(得分:0)

请确保在测试类中使用DatabaseMigrations特性。例如

use Illuminate\Foundation\Testing\DatabaseMigrations;

class SomeTest extends TestCase
{
     use DatabaseMigrations;

   /**
    * A basic test example.
    *
    * @return void
    */
    public function testSomething()
    {
        //some code
    }

}

这会在设置时迁移您的数据,然后在测试结束时删除应用程序时,注册一个方向以回滚迁移。