인프런 커뮤니티 질문&답변

처리님의 프로필 이미지
처리

작성한 질문수

Flutter 중급 1편 - 클린 아키텍처

15 에러 처리

type 에러

작성

·

604

0

안녕하세요 선생님!

 

다름이 아니라 테스트 코드 작성중에

result 를 Success로 캐스팅 하여 테스트 코드 실행 하였는데 터미널과 같은 에러가 발생하는데 무엇때문에

에러가 뜨는지 모르겠어요 ㅠㅠ

운영 관련 문의는 1:1 문의하기를 이용해주세요.

답변 1

0

오준석님의 프로필 이미지
오준석
지식공유자

에러가 났는데 Success 타입으로 강제 캐스팅 했기 때문입니다.

result 의 타입 검사를 해 보시면 어떨까요

https://stackoverflow.com/questions/7715948/how-to-perform-runtime-type-checking-in-dart

28번 라인에 브레이크포인트를 찍고 디버그 모드로 실행해서 값을 살펴보시는 것도 좋을 것 같습니다.

처리님의 프로필 이미지
처리
질문자

에러를 출력해보니 fetch를 List<Photo> 타입 정해논부분에 값이 List<dynamic>으로 들어오고있어서 fetch 타입을 전부List<dynamic>으로 바꿨는데 괜찮나요,,???

오준석님의 프로필 이미지
오준석
지식공유자

dynamic 은 런타임에 에러를 유발하기 때문에 가급적이면 안 쓰는 것이 좋습니다

무언가 잘못 되었기 때문에 Photo로 들어오지 않는 것이겠지요.

디버그 모드로 찾아봐야 합니다.

처리님의 프로필 이미지
처리
질문자

주말 저녁에도 빠른 답변 감사합니다..!

아직 못찾아서 찾아보다가 궁금한 부분이 생겼는데 fakeJsonBody 는 String 타입인가요

아니면 Map<String, dynamic> 타입 인건가요!??

오준석님의 프로필 이미지
오준석
지식공유자

String 타입입니다

오준석님의 프로필 이미지
오준석
지식공유자

Iterable 은 추상클래스로 반복되는 자료구조의 추상화 클래스입니다. 이를 구현한 클래스가 List, Set 등입니다.

따라서 dynamic 으로 들어오는 Json 리스트 값들은 List 또는 Iterable 로 모두 받을 수 있습니다.

일단 코드를 전체적으로 봐야될 것 같은데 List 가 아니라 Iterable을 리턴하고 있는 부분이 있다면 이는 사용하는 쪽에서 dynamic으로 처리될 수 있을 것 같습니다. 소스와 한번 비교해 보시기 바랍니다.

https://github.com/junsuk5/flutter-clean-architecture-course/blob/7c6c8a7a502adcac055bd28155a24fc8645e0c24/image-search-app/test/data/pixabay_api_test.dart#L24

https://github.com/junsuk5/flutter-clean-architecture-course/blob/7c6c8a7a502adcac055bd28155a24fc8645e0c24/image-search-app/lib/data/repository/photo_api_repository_impl.dart#L9

처리님의 프로필 이미지
처리

작성한 질문수

질문하기