2017-08-30 6 views
1

Laravelのテストで問題があります。 usersテーブルが作成されない理由はわかりません。他のすべてのテーブルはokです。sqliteを使用したLaravelテストではユーザーテーブルが作成されません

テスト用データベース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'); 
      } 
     } 

テスト/ユニット/ 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 

答えて

0

を、私はcreate_users_table移行、中に「s」を欠場...

しかし、どのように、私は "を失いましたコード内に 's':O Lol !!!!

ダミーミスでした

関連する問題