-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test: Home 테스트 코드 작성 #202
test: Home 테스트 코드 작성 #202
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
현재 VIP Cycle의 호출여부를 관리하는 테스트 코드만 있는데, 따로 올바른 받아오거나 비즈니스 로직을 테스트 하는 코드는 없는 건가요? 다음 VIP 싸이클 호출여부로 파악할 수 있다고 판단하셔서 이렇게 처리하셨는지 궁금합니다.
Task타입은 좋은 것 같습니다. 저도 한 번 써보겠습니다. 고생하셨습니다.
@@ -45,27 +47,33 @@ final class HomeInteractor: HomeDataStore { | |||
// MARK: - Use Case | |||
|
|||
extension HomeInteractor: HomeBusinessLogic { | |||
func fetchPosts(with request: Models.FetchPosts.Request) { | |||
@discardableResult | |||
func fetchPosts(with request: Models.FetchPosts.Request) -> Task<Bool, Never> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
제가 presenter 입출력 테스트 하는 부분은 까먹고 작성을 못했네요. 작성해서 더 올리겠습니다 |
final class HomePresentationLogicSpy: HomePresentationLogic { // 호출 테스트를 위한 Spy | ||
var presentPostsCalled = false | ||
var presentPostsReceivedResponse: Models.FetchPosts.Response! | ||
var presentThumbnailImageCalled = false | ||
var presentThumbnailImageReceivedResponse: Models.FetchThumbnailImageData.Response! | ||
var presentPlaybackSceneCalled = false | ||
var presentTagPlayListCalled = false | ||
|
||
func presentPosts(with response: Models.FetchPosts.Response) { | ||
presentPostsCalled = true | ||
presentPostsReceivedResponse = response | ||
} | ||
|
||
func presentThumbnailImage(with response: Models.FetchThumbnailImageData.Response) { | ||
presentThumbnailImageCalled = true | ||
presentThumbnailImageReceivedResponse = response | ||
} | ||
|
||
func presentPlaybackScene(with response: Models.PlayPosts.Response) { | ||
presentPlaybackSceneCalled = true | ||
} | ||
|
||
func presentTagPlayList(with response: Models.ShowTagPlayList.Response) { | ||
presentTagPlayListCalled = true | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아하 이런식으로 뒷단 객체를 프로토콜 채택하는 spy를 만들어서 테스트하는 방법이군욤
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
사용하지않는 Task 타입을 리턴하는게 살짜쿵 마음에 걸리긴하는데,
말씀하신 것처럼 안티패턴까지는 아닌 것 같아서 충분히 괜찮은 방법 같아보여요 ㅇ.ㅇ
나중에 같이 더 좋은 방법 찾아봐도 괜찮을 것 같구용
수고하셨습니다 !! 나중에 테스트 코드 짤 때 참고할게요 🫰
저도 해당 부분이 고민 되기는 하는데 스택 오버플로우에도 저랑 동일한 고민하시는 분이 계셨었어요. |
🧑🚀 PR 요약
📌 변경 사항
Note
전체적인 테스트 타겟 구조
Note
테스트 코드 형태
Note
Interactor가 테스트 가능하도록 수정 필요
+) 지난번에 학습 스프린트 기간때 리뷰어셨던 광현님께서도 비동기 컨텍스트를 실행하는 메서드의 경우 성공/실패 여부를 리턴하는게 좋다고 하셔서 괜찮다고 생각합니다!
그치만 더 좋은 방법이 있다면 알려주세요...ㅎㅎ....
Linked Issue
close #200