그래서 새로운 기능을 구현하기 전에 몇 가지 단위 테스트를 하고 있어요. 테스트를 실행했는데 다음과 같이 실패했습니다. OverflowException :最大重试次数达到 10000 次,但未找到唯一值
이것이 내가 실행 중인 테스트입니다.
작업 자체를 생성할 때 오류가 발생하는 것 같습니다. 위의 테스트는 다른 식물을 테스트했으며 작동 중입니다.
이것은 JobFactory.php 파일입니다:
으아악이에 대한 마이그레이션(create_jobs_table.php):
으아악그럼 무엇이 잘못되었으며 왜 이런 주기가 발생하나요? 작업을 생성하는 데 필요한 최소한의 데이터를 추가했는데 무엇이 누락되었는지 잘 모르겠습니다.
감사합니다
*** 편집 *** 저는 Unique와 NumberBetween을 사용하는 나쁜 습관을 발견한 위치에 대한 링크를 제공하라는 요청을 받았습니다. 여기에 예가 있습니다. 이것은 여러분이 찾고 있는 것처럼 작동하지 않습니다!
문제는 1과 5 사이의 5개 값을 구하려고 할 때입니다. (포함) 4개까지만 가져갈 수 있습니다. 5번째 숫자는 절대 초과하지 않습니다.
unique()
확인.이것은 예를 들어 고유의 첫 번째 인스턴스를 실행할 때
으아악그런 다음 다른 팩토리에서 실행하면 일반적으로 laravel은 이전 인스턴스를 확장합니다(아마도). 하지만 아래와 같이 true를 통과하면
으아악1부터 20까지 다시 검색이 시작됩니다
이로 내 문제가 해결되었습니다.
따라서
에서는 항상 true를 전달합니다.unique()
인스턴스이 문제를 해결하려면 문서화된 접근 방식을 따르는 것이 좋습니다. https://laravel.com/docs/9.x/database-test#factoryrelationship
마이그레이션 테이블을 살펴보세요. SQL 수준에서 관계를 표시하고 있기 때문에 공장이 작동하지 않을 가능성이 높습니다. 기본적으로 관련 테이블에 레코드가 있어야 하며, 그렇지 않으면 SQL에서 오류가 발생합니다.