【问题标题】:Laravel tests with sqlite doesn't create users table使用 sqlite 的 Laravel 测试不会创建用户表
【发布时间】:2017-08-30 19:37:57
【问题描述】:

我对 Laravel 中的测试有疑问。 我不知道为什么没有创建用户表,因为所有其他表都可以。

用于测试的数据库是运行在 :memory: 中的 Sqlite:

我的 PHP 单元配置文件 (phpunit.xml)

      <php>
              <env name="APP_ENV" value="testing"/>
              <env name="DB_CONNECTION" value="sqlite"/>
              <env name="DB_DATABASE" value=":memory:"/>
              <env name="CACHE_DRIVER" value="array"/>
              <env name="SESSION_DRIVER" value="array"/>
              <env name="QUEUE_DRIVER" value="sync"/>
          </php>

用户迁移 (create_users_table)

      use Illuminate\Support\Facades\Schema;
      use Illuminate\Database\Schema\Blueprint;
      use Illuminate\Database\Migrations\Migration;

      class CreateUsersTable extends Migration
      {
          /**
           * Run the migrations.
           *
           * @return void
           */
          public function up()
          {
              Schema::create('user', function (Blueprint $table) {

                  $table->increments('id');
                  $table->integer('status')->nullable()->default(1);
                  $table->string('name');
                  $table->string('email')->unique();
                  $table->string('password');
                  $table->string('sysid', 20)->nullable();
                  $table->string('avatar')->nullable();
                  $table->string('cpf', 18)->nullable();

                  $table->rememberToken();
                  $table->timestamps();
              });
          }

          /**
           * Reverse the migrations.
           *
           * @return void
           */
          public function down()
          {
              Schema::dropIfExists('user');
          }
      }

tests/Unit/RoleTest.php

    <?php

    namespace Tests\Unit;

    use Tests\TestCase;
    use Illuminate\Foundation\Testing\DatabaseMigrations;
    use Illuminate\Foundation\Testing\DatabaseTransactions;

    class RoleTest extends TestCase
    {

        use DatabaseMigrations;

        protected $role;
        protected $permission;


        public function setUp() {

            parent::setUp();
            $this->role = factory('App\Model\ACL\Role')->create();
            $this->permission = factory('App\Model\ACL\Permission')->create();
        }


        /** @test */
        public function a_role_has_permissions ()
        {

            $this->assertInstanceOf(
        'Illuminate\Database\Eloquent\Collection', $this->role->permissions
            );
        }

        /** @test */
        public function a_role_gives_permission_to ()
        {
            $permission = $this->role->givePermissionTo($this->permission);
            $this->assertInstanceOf('App\Model\ACL\Permission', $permission);

        }


        /** @test */
        public function a_role_has_permission ()
        {
            $permission = $this->role->givePermissionTo($this->permission);
            $this->assertTrue($this->role->hasPermission($this->permission));
        }


        /** @test */
        public function a_role_has_many_users ()
        {

            $this->assertInstanceOf(
                'Illuminate\Database\Eloquent\Collection', $this->role->users
            );

        }
    }

测试出现以下错误:

    1) Tests\Unit\RoleTest::a_role_has_many_users
    Illuminate\Database\QueryException: SQLSTATE[HY000]: General error: 1 no such table: users (SQL: select "users".*, "role_user"."role_id" as "pivot_role_id", "role_user"."user_id" as "pivot_user_id" from "users" inner join "role_user" on "users"."id" = "role_user"."user_id" where "role_user"."role_id" = 1)


    Caused by
    PDOException: SQLSTATE[HY000]: General error: 1 no such table: users

【问题讨论】:

    标签: laravel sqlite testing


    【解决方案1】:

    出于某种我不知道为什么的原因,我错过了迁移中的“s”,create_users_table..

    但是我如何在代码中丢失了“s”:O 哈哈!!!!

    是个假错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      相关资源
      最近更新 更多