Laravel 5.4에서 기능 테스트에 문제가 발생했습니다. 쿼리 빌더 중 하나를 사용할 때마다이 오류는 일반적으로 단지 발생 내 지식이라는 사실이Laravel 5.4 SQLite를 사용하여 데이터베이스를 테스트 할 때 ModelNotFoundException이 발생했습니다
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
내가 생각하는 이상이다 : 나는 SQLite는 메모리 구성 내 데이터베이스 테스트를 실행하려고 할 때마다 나는이 오류 -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>