Laravel / Phpunit:是否可以通过终端强制DB连接?

时间:2019-02-13 10:44:41

标签: laravel phpunit

我有一个Laravel项目。

我想在我的开发机+ Travis / Scrutinizer上使用SQLite对其进行测试,另外我想在另一台使用MySQL的计算机上进行测试。

这是我的PHPUnit文件,就像一个迷住了

ExternalTaskSensor

我在问:是否有可能在linux shell命令上启动类似的命令(当然是伪代码):

<?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="Unit">
            <directory suffix="Test.php">./tests/Unit</directory>
        </testsuite>

        <testsuite name="Feature">
            <directory suffix="Test.php">./tests/Feature</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">./app</directory>
        </whitelist>
    </filter>
    <logging>
        <!-- and this is where your report will be written -->
        <log type="coverage-clover" target="./logs/clover.xml"/>
    </logging>
    <php>
        <env name="DB_CONNECTION" value="sqlite"/>
        <env name="APP_ENV" value="testing"/>
        <env name="BCRYPT_ROUNDS" value="4"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="MAIL_DRIVER" value="array"/>
        <env name="QUEUE_CONNECTION" value="sync"/>
        <env name="SESSION_DRIVER" value="array"/>
    </php>
</phpunit>

1 个答案:

答案 0 :(得分:1)

默认情况下,无法从命令行动态编辑phpunit.xml文件,但是您可以像这样设置DB_CONNECTION环境变量(和其他变量):

DB_CONNECTION=mysql ./vendor/bin/phpunit

您可以在this答案中查看更多用于设置环境变量的选项。