【问题标题】:Laravel: phpunit is not migrating before running the testsLaravel:phpunit 在运行测试之前没有迁移
【发布时间】:2019-04-06 06:57:39
【问题描述】:

当我尝试使用 /vendor/bin/phpunit 在 laravel 中运行我的所有测试时,我收到以下错误:

There was 1 error:

1) Tests\Unit\Services\PropertyServiceTest::testCreateProperty
Illuminate\Database\QueryException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'omega-testing.properties' doesn't exist (SQL: insert into `properties` (`name`, `description`, `address_line1`, `length`, `services`, `bathrooms`, `bedrooms`, `price`, `latitude`, `longitude`, `updated_at`, `created_at`) values (Sonny Rutherford, sit sapiente ipsa adipisci debitis, 62895 Gretchen Gardens Suite 795
Harveyburgh, SD 29937-4999, 3.1600498, amet tempore ut voluptatem ut, doloremque debitis sequi quam nemo, 1, 43199635, , , 2018-11-02 01:37:01, 2018-11-02 01:37:01))

/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:624
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:459
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:411
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php:32
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2558
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:1318
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:821
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:786
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:649
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:790
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Support/helpers.php:1023
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:791
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:23
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1608
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1620
/Users/jacobotapia/Documents/Espora/omega-webapp/app/Services/PropertyService.php:29
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:223
/Users/jacobotapia/Documents/Espora/omega-webapp/tests/Unit/Services/PropertyServiceTest.php:34

Caused by
PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'omega-testing.properties' doesn't exist

/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:452
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:657
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:624
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:459
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:411
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php:32
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2558
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:1318
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:821
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:786
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:649
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:790
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Support/helpers.php:1023
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:791
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:23
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1608
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1620
/Users/jacobotapia/Documents/Espora/omega-webapp/app/Services/PropertyService.php:29
/Users/jacobotapia/Documents/Espora/omega-webapp/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:223
/Users/jacobotapia/Documents/Espora/omega-webapp/tests/Unit/Services/PropertyServiceTest.php:34

我配置了一个 .env.testing,如下所示:

APP_ENV=testing
APP_KEY=base64:6AiBWxoh8mYOTXbDPyVfEQgM4i3A7YoQC0o0x/0m62I=

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=omega-testing
DB_USERNAME=goal
DB_PASSWORD=goal

BCRYPT_ROUNDS=4
CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=array
MAIL_DRIVER=array

我不知道为什么 phpunit 在运行测试之前没有迁移。我尝试进行迁移,将--env = testing 添加到 migrate 命令中,然后运行测试,但是 phpunit 首先删除所有表并且不再进行迁移。

我不知道发生了什么。

【问题讨论】:

  • 您是否在测试类的顶部添加了use RefreshDatabase;

标签: laravel laravel-5 phpunit


【解决方案1】:

问题出在我的测试文件的导入上。

首先我导入use Tests\TestCase; 并扩展它。 当我更改为 use Tests\TestDatabaseCase; 并扩展 TestDatabaseCase 时,一切正常。

【讨论】:

    【解决方案2】:

    你为什么不试试关注:

    php artisan config:clear
    

    现在,运行后:

    php artisan migrate
    

    后跟:

    供应商/bin/phpunit

    【讨论】:

      猜你喜欢
      • 2013-02-01
      • 2018-10-06
      • 2016-11-02
      • 2018-10-17
      • 2015-02-02
      • 2020-03-04
      • 2012-08-07
      • 2020-12-20
      • 2023-04-11
      相关资源
      最近更新 更多