単体テストの OverflowException: 最大再試行回数が 10,000 回に達しましたが、一意の値がまだ見つかりません
P粉186897465
P粉186897465 2024-04-06 11:27:39
0
2
523

そこで、新しい機能を実装する前に単体テストを行っています。テストを実行しましたが、OverflowException で失敗しました: 最大再試行回数は 10000 に達しましたが、一意の値が見つかりません これは私が実行しているテストです。

リーリー

ジョブ自体の作成時にエラーが発生するようです。上記のテストは他のプラントをテストし、機能しています。

これは JobFactory.php ファイルです:

リーリー

そして、これの移行 (create_jobs_table.php):

リーリー

それでは、何が問題で、なぜこのループが発生するのでしょうか?ジョブの作成に必要な最小限のデータを追加したので、何が足りないのかわかりません。

###ありがとう### ###*** 編集 *** unique とnumberBetween を使用する悪い習慣を見つけた場所へのリンクを提供するように求められました。これは例です。これはあなたが探しているようには機能しません。

P粉186897465
P粉186897465

全員に返信(2)
P粉442576165

問題は、1 から 5 までの 5 つの値を取得しようとする場合です。 (包括的)、4 つしか取得できません。 5番目の数字を超えることはありません unique() 検証。

これは、たとえば、unique の最初のインスタンスを実行する場合に発生するためです。 リーリー

次に、それを別のファクトリーで実行します。それが理にかなっている場合、laravel は通常、前のインスタンスを拡張します (おそらく)。 ただし、以下のように

true を渡すと リーリー

1から20まで再度検索を開始します

これで私の問題は解決しました。

したがって、

unique() インスタンスでは常に true を渡します。

いいねを押す +0
P粉164942791

この問題を解決するには、文書化されたアプローチに従うことをお勧めします。 https://laravel.com/docs/9.x/database-test#factoryrelationship

移行テーブルを見ると、SQL レベルでリレーションシップを示しているため、ファクトリが機能しない可能性が高くなります。基本的に、レコードを関連テーブルに含めることが強制されます。そうしないと、SQL がエラーをスローします。 ..

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート