php 편집기 Strawberry는 테스트 구조를 반복하는 동안 오류를 발견했습니다. 오류.As()를 사용할 때 두 번째 매개변수는 오류로 반환됩니다. As는 오류가 아닌 오류에 대한 포인터여야 합니다. 이 오류로 인해 프로그램이 예기치 않게 또는 잘못 작동할 수 있습니다. 따라서 error.As()를 사용할 때는 매개변수의 유형에 주의하고 문제가 발생하지 않도록 오류에 대한 포인터가 전달되는지 확인하십시오. 이 문제는 테스트 구조를 반복할 때 발생할 수 있으므로 error.As()를 사용할 때 특별한 주의를 기울이십시오.
현재 함수가 여러 유형의 오류를 반환할 수 있는 패키지에 대한 단위 테스트를 작성하고 있습니다. 나는 구조를 다음과 같이 정의합니다:
으아악사용하고 싶고errors.as()
在我测试的错误中查找 test.err
. 테스트에 사용한 예제 구조는 다음과 같습니다.
오류 인터페이스를 구현해야 하는 errors.as
用于实现错误接口的不同结构类型。因此,正如您在结构中看到的那样,我将 err 定义为错误。可以看出,我使用 &url.error{}
를 추가하고 싶습니다.
그러나 위와 같이 errors.as
를 사용하면
내가 이해한 바에 따르면 error.as()는 any
를 두 번째 인수로 허용하므로 *error를 사용할 수 없는 이유가 무엇인지 혼란스럽습니다.
또한 테스트 구조의 err
필드를 인터페이스{}로 변경하려고 시도했지만 이렇게 하면 대상이 오류에 있는지 여부에 관계없이 모든 어설션이 통과되었습니다.
errors.as()
를 사용하여 위와 유사한 방식으로 오류 인터페이스를 구현하는 다른 유형의 솔루션을 구현하는 방법을 찾을 수 없으므로 이제는 contains를 사용합니다. ()
코드> 대신. 누구든지 통찰력을 제공할 수 있는지 궁금합니다. errors.as()
来实现以与上面类似的方式实现错误接口的不同类型的解决方案,所以现在我依靠使用 contains()
来代替。想知道是否有人可以提供一些见解。
指向错误类型的指针不满足 error
接口,这就是为什么 as
的第二个参数的类型为 any
。为了将您想要的类型直接存储在 .err
字段中,该字段也必须是 any
error
인터페이스를 충족하지 않으므로 as
의 두 번째 매개 변수가 🎜 유형입니다. 원하는 유형을 .err
필드에 직접 저장하려면 해당 필드도 🎜 유형이어야 합니다. 🎜
🎜그러나 이 포인터 값을 인터페이스에 래핑했으므로 검사할 값을 얻으려면 유형 어설션이나 리플렉션을 사용해야 합니다. 🎜
으아악위 내용은 테스트 구조를 반복할 때 오류.As()를 사용하여 두 번째 매개변수를 오류로 반환합니다. As는 *error가 되어서는 안 됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!