단위 테스트 OverflowException: 최대 재시도 횟수가 10,000회에 도달했지만 여전히 고유 값을 찾을 수 없습니다.
P粉186897465
P粉186897465 2024-04-06 11:27:39
0
2
334

그래서 새로운 기능을 구현하기 전에 몇 가지 단위 테스트를 하고 있어요. 테스트를 실행했는데 다음과 같이 실패했습니다. OverflowException :最大重试次数达到 10000 次,但未找到唯一值 이것이 내가 실행 중인 테스트입니다.

으아악

작업 자체를 생성할 때 오류가 발생하는 것 같습니다. 위의 테스트는 다른 식물을 테스트했으며 작동 중입니다.

이것은 JobFactory.php 파일입니다:

으아악

이에 대한 마이그레이션(create_jobs_table.php):

으아악

그럼 무엇이 잘못되었으며 왜 이런 주기가 발생하나요? 작업을 생성하는 데 필요한 최소한의 데이터를 추가했는데 무엇이 누락되었는지 잘 모르겠습니다.

감사합니다

*** 편집 *** 저는 Unique와 NumberBetween을 사용하는 나쁜 습관을 발견한 위치에 대한 링크를 제공하라는 요청을 받았습니다. 여기에 예가 있습니다. 이것은 여러분이 찾고 있는 것처럼 작동하지 않습니다!

P粉186897465
P粉186897465

모든 응답(2)
P粉442576165

문제는 1과 5 사이의 5개 값을 구하려고 할 때입니다. (포함) 4개까지만 가져갈 수 있습니다. 5번째 숫자는 절대 초과하지 않습니다. unique() 확인.

이것은 예를 들어 고유의 첫 번째 인스턴스를 실행할 때

으아악

그런 다음 다른 팩토리에서 실행하면 일반적으로 laravel은 이전 인스턴스를 확장합니다(아마도). 하지만 아래와 같이 true를 통과하면

으아악

1부터 20까지 다시 검색이 시작됩니다

이로 내 문제가 해결되었습니다.

따라서 unique() 인스턴스

에서는 항상 true를 전달합니다.
P粉164942791

이 문제를 해결하려면 문서화된 접근 방식을 따르는 것이 좋습니다. https://laravel.com/docs/9.x/database-test#factoryrelationship

마이그레이션 테이블을 살펴보세요. SQL 수준에서 관계를 표시하고 있기 때문에 공장이 작동하지 않을 가능성이 높습니다. 기본적으로 관련 테이블에 레코드가 있어야 하며, 그렇지 않으면 SQL에서 오류가 발생합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!