티스토리 뷰

반응형

테스트 코드부터 작성하는 것이 감이 안와서 테스트 코드보다 먼저 ArtistAPIService를 작성해버렸다... 🙄

이전 포스팅에서 만들었던 ArtistAPIType을 이용하여...!!! 

 

 

물론 다음과 같이 Artist모델도 만들어줬다...!!! 

 

 

 

그리고 Apple Music API 홈페이지에 들어가서 해당 API에 해당하는 더미데이터를 복붙하여 넣어준 더미데이터 파일을 만들고 테스트 코드 있는 쪽에 넣어준다 BananaMusicTests 그룹안에 넣어주면 된다 (나의 토이프로젝트 이름은 BananaMusic이기때문...ㅎㅎ!! )

 

 

그리고 실제 서버에서 주는 데이터가 아니라 이 더미데이터를 파싱하는 ArtistAPIServiceStub 을 만든다 (Stub, Mock, Spy 등등 다양한 용어들이 있던데 Stub이 정확한 용어가 아닐 수 도 있지만 일단 Stub이라고 하기!) 

 

 

그다음 이제 Test코드를 만들어서 JSON 디코딩을 잘하는 지 테스트 해보자--!!

 

 

 

두개의 테스트 모두 테스트 성공이라고 나온다...!!! 

** 의문점 
- XCTFail은 있는데 왜 XCTSuccess는 없는 것일까?!?!?! 

- XCTAssert랑 XCTFail에 적은 메세지는 어디 나오는 것일까?!? 테스트 성공했을때 같이 나오는 것도 아니고 출력되지도 않던딩..?!? 

 

 

 

나의 첫 TDD는 테스트 코드가 먼저 되지 못했지만, 제대로 TDD를 했다면

모델만들고 더미데이터를 만들고, ServiceProtocol을 정의 한후 ArtistServiceStub을 먼저 작성하여 테스트를 돌리고 그 다음에 실제 서비스에서 쓸 ArtistService를 만드는 순서일 것이다...!!! 

 

그니까 나는

모델 -> ServiceProtocol ->  ArtistService -> 더미데이터 -> ArtistServiceStub -> 테스트

순서으로 만들었지만 

TDD로 한다면 

모델 -> 더미데이터 -> ServiceProtocol-> ArtistServiceStub -> 테스트 -> ArtistService 

이 순서가 되야하지 않을 까 싶다 

 

 

** 궁금점

- Stub으로 만들어서 테스트 후, Service를 만들면 Stub을 서비스로 바꿔서 다시 테스트를 돌려야되나?!?!? 

    override func setUp() {
        service = ArtistAPIServiceStub()
    }

위의 코드를 밑의 처럼 바꿔서..?!? 

    override func setUp() {
        service = ArtistAPIService()
    }

 

반응형
댓글