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>