-
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
[Refactor] UnitTest BDD 형태로 리팩토링 with Quick Nimble 및 메서드 Completion 방식 변경 #22
Conversation
- 불 필요한 import 주입 제거 - 객체별 테스트 형태 -> BDD 형태로 변환 시도 - 테스트 파일 삭제 CasualConversationTests.swift - BDD 문맥 한글화
- 불 필요한 import 주입 제거 - 불 필요한 주석 제거 - 객체별 테스트 형태 -> BDD 형태로 변환 시도 - 테스트 파일 삭제 DataTests.swift - BDD 문맥 한글화
- 불 필요한 import 주입 제거 - 불 필요한 주석 제거 - 객체별 테스트 형태 -> BDD 형태로 변환 시도 - 테스트 파일 삭제 DomainLayerTests.swift - BDD 문맥 한글화
- 불 필요한 import 주입 제거 - 불 필요한 주석 제거 - 객체별 테스트 형태 -> BDD 형태로 변환 시도 - 테스트 파일 삭제 PresentationTests.swift - BDD 문맥 한글화
각 객체의 BDD 파일을 독립 구성
Bool 반환 -> Error? 매개변수 completion closure 형태로 변경 - Quick 버전 상이해서 Result 부분 주석처리함
describe("인스턴스 객체") { | ||
var appDIContainer: AppDIContainer! | ||
beforeEach { appDIContainer = AppDIContainer() } | ||
afterEach { appDIContainer = nil } | ||
|
||
describe("Presentation Layer에 DIContainer 전달 위해서") { | ||
context("팩토리메서드 호출하면") { | ||
var presentationDIContainer: PresentationDIContainer! | ||
beforeEach { presentationDIContainer = appDIContainer.makePresentationDIContainer() } | ||
|
||
it("PresentationDIContainer 생성됨") { | ||
expect(presentationDIContainer).notTo(beNil()) | ||
} | ||
} | ||
} |
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.
첫 describe를 describe("AppDIContainer가")
로 바꾸는 것은 어떨까요?!
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.
이 부분에 대한 고민이 있습니다. 구현할때 제 생각으로 짜봤는 데
정확히 내용 설명이 없었던 것 같네요 ㅠ
우선 제가 생각한 아이디어는 현재 테스트 방식이 기존 UnitTest 처럼,
하나의 사용자 타입에서 일어나는 BDD 라는 의미로 타입별로 Specs를 생성했습니다.
두번째 스크린샷처럼 테스트 문장을 대표하는 최상위 파일명(타입명Specs) == 테스트할 사용자 타입
이므로,
첫 테스트 문장을 의미하는 describe() 부분을 "인스턴스 객체" 로 표기했습니다.
현재 저희 구현에서 DIContainer를 싱글턴이나 타입 메서드로 사용하지 않지만,
상황에 따라 팩토리 메서드가 정적 메서드인 경우면
첫 describe() 표기를 "타입 객체" 등으로 구분하면 어떨까 하는 생각으로 현재처럼 구현했습니다.
이런 아이디어 공유 없었는데 혹시 이런 방식은 어떨지 코다 생각이 궁금합니다!
구현 배경
#21 - BDD 적용 (하루만)
07.17 미팅 중 언급된 Bool 반환 메서드 completion 방식 -> 클로저로 변경 (non-Excaping) 요청
기능 설명
Specs 공통
import
주입 제거 및 프레임워크 필요 부분만import
~Tests.swift
import
최소화.empty
타입 프로퍼티 이용해서import
피함// TODO:
주석Domain Module
Bool 반환 매서드 completion 방식 -> 클로저로 변경 (non-Excaping)
completion: (Error?) -> Void)
completion: (Result<URL, Error>) -> Void)
// URL 이외에도 가능코멘트
미팅때 언급되었던 부분 반영해보았습니다. ( - [x] 테스트는 하루만 고심하기 )
Error 타입 생성되면 적용위해 수정이 한번 필요하고,
앞으로 모든 코드 작성 시 현재까지 구성된 Test 스타일 유지해서 Test 코드 병행 구현해야 합니다