2017-11-29 4 views
0

Laravel 5.4の機能テストで問題が発生しました。私はSQLiteのメモリ構成で、私のデータベースのテストを実行しようとするたびに私はこのエラーを取得する:Laravel 5.4 ModelNotFoundException SQLiteでデータベースをテストするとき

1) Tests\Feature\ParseAccountingFilesTest::testExample
│/Middleware/ValidatePostSize.php(27): Illuminate\Routing\Pipeline->Illuminate\R Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [App\QueuedAction] 1

私は奇妙だと思うどのようなクエリビルダのいずれかを使用するたびに、このエラーは、私の知る限りであるという事実は、一般的にのみ検出されました-OrFail()メソッド私のコードは、データベース・キュー・ドライバーとMySQLをデータベース・ドライバーとして使用すると、テストの外で完璧に動作します。問題をデバッグし、以下のクラスコンストラクタで次の文が原因であることが判明しました:

$this->scheduledAction = $action; 

このエラーは意味をなさないです。関連するクエリはなく、単純な割り当てのみが必要です。このクラスは、実際のジョブクラスがどのアクションがすでにキューに入れられているかを追跡するための単純な親クラスとして使用されます。ここで

abstract class SchedulesOnce implements ShouldQueue 
{ 
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 

    protected $scheduledAction; 

    public function __construct(string $id, string $type) 
    { 
     $action = new QueuedAction(); 
     $action->id = $id; 
     $action->type = $type; 
     $action->save(); 
     $this->scheduledAction = $action; 
    } 

    // Execute the job 
    public function handle() 
    { 
     $this->execute(); 

     // Delete the queue reservation 
     $this->scheduledAction->delete(); 
    } 

    // Child functionality 
    protected abstract function execute(); 
} 

は、そのエラーが現れている理由私は本当にわからないんだけど、私のphpunit.xml

<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> 

答えて

0

内の関連する行ですが、以前、私はLaravel 5.3での作業と同様のテストのセットアップを持っていました。

5.4から5.5へのアップグレードは私の問題を解決したようです。

関連する問題