我在Homestead-7上使用Laravel 5.5,phpunit 6.5.5(我认为)。
我正在尝试本教程:https : //laravel-news.com/your-first-laravel-application(这应该告诉您很多我在框架方面的经验)
测试失败(由于TokenMismatchException),尽管我尝试了许多将其APP_ENV设置为的方法local,但我设法找出了设置为该变量的根本原因testing。
最后,让我克服了这个问题的是设置变量,如下所示:
APP_ENV=testing vendor/bin/phpunit
Run Code Online (Sandbox Code Playgroud)
然后,测试成功完成。
我的问题是,我在做什么错?上述破解显然不是最好的方法。必须有一种正确执行此操作的方法。
更新资料
内容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>
Run Code Online (Sandbox Code Playgroud)
预先感谢您的宝贵时间。
当通过运行测试时
phpunit,testing由于phpunit.xml文件中定义了环境变量,Laravel将自动将配置环境设置为。
...所以我敢打赌,您的phpunit.xml文件丢失或配置错误。它应该在您项目的根目录中,并应包含以下内容:
<php>
<env name="APP_ENV" value="testing"/>
...
</php>
Run Code Online (Sandbox Code Playgroud)
如果您确实phpunit.xml在正确的位置有一个文件,并且确实包含上面的部分,但仍无法使用,请尝试清除配置缓存:
php artisan config:clear
Run Code Online (Sandbox Code Playgroud)
如果仍然不能解决问题,那么我将检查phpunit.xml文件是否有异常,例如被错误命名或包含语法错误。
这是原始文件的链接phpunit.xml,以帮助您在需要时还原它。
| 归档时间: |
|
| 查看次数: |
1721 次 |
| 最近记录: |