2017-10-26 14 views
0

ラーベールテスト環境では、ラーベールゲートは機能しません。 phpunit.xml ファイルでは、sqlite接続と:memory:をデータベースとして使用しています。ラーベールゲートエラー、そのようなテーブルがありません:パーミッション(SQL:select from * "permissions")

<env name="DB_CONNECTION" value="sqlite"/> 
<env name="DB_DATABASE" value=":memory:"/> 

AuthServiceProviderでは、以下のコードでゲートを定義しています。

public function boot(GateContract $gate) 
{ 
    $this->registerPolicies($gate); 


    foreach($this->getPermissions() as $permission) { 
     $gate->define($permission->name, function($user) { 
      $user->hasRole($permission->roles); 
     }); 
    } 
} 

protected function getPermissions() { 
    return Permission::with('roles')->get(); 
} 

これまでにphpunitを実行しました。エラーno such table: permissions (SQL: select * from "permissions")が表示されます。

テスト環境では、移行後にゲートを定義する方法を教えてください。

答えて

0

これを試してみてください:

foreach($this->getPermissions() as $permission) { 
      $gate->define($permission->name, function($user)use($permisson) { 
       $user->hasRole($permission->roles); 
      }); 
     } 

あなたは$許可が不定になりますuse($permission)を使用しない場合は...

関連する問題