테스트코드 5

Swift URLProtocol (URLSessionConfiguration)

Swift URLProtocol (URLSessionConfiguration) 최근 서비스에서 애드가드를 막기 위한 방법을 고민하고 있는데, 네트워크 관련 부분을 학습함.학습 후에 테스트코드, 퍼널 분석을 위한 로그 및 시스템 os로그 기록 등 더 다양하게 활용할 수 있을 것으로 기대. 학습 예제 파일 (SPM - Currency)목차OverviewURLProtocol 간단 요약코드 구현 예제주요 메서드 설명코드 사용 예제활용할 수 있는 포인트 OverviewApple의 공식 문서에서 제공하는 URLProtocol은 URL 로딩 시스템의 요청을 처리하는 데 사용되는 강력한 커스텀 프로토콜.URLProtocol은 애플의 URL 로딩 시스템이 네트워크 요청을 처리하는 방식을 커스터마이즈하거나 대체할 수 있도..

언어의 기본 자료형 Dummy를 활용해 더 명확한 테스트 작성하기

언어의 기본 자료형 Dummy를 활용해 더 명확한 테스트 작성하기 테스트 코드를 작성하면서 언어에서 제공하는 기본 값을 그대로 사용하는 경우해당 값이 테스트에 영향을 주는 값인지혹은 단순히 기본값인지 다른 개발자가 판단하기 어려운 경우가 많음.이는 결국 가독성과 유지보수에 문제를 일으킬 수도 있음. 목차Swift의 기본 자료형을 Dummy 대신 사용한 테스트 코드를 마주한 경우Model 과 ViewModel의 구현체 확인테스트 코드에 Dummy 값을 명시적으로 사용한 경우 Swift의 기본 자료형을 Dummy 대신 사용한 테스트 코드를 마주한 경우아래처럼 테스트코드가 작성되어 있다면, 테스트가 올바르게 작성되었다고 생각하기보다 코드를 볼수록 많는 의문점들이 생겨남많은 의문점들은 테스트 본질이 아닌 부..

[ReactorKit] ReactorKit 공부하기 #2

ReactorKit 공부하기 #2 해당 문서는 ReactorKit 3.2.0을 기준으로 작성.이번에는 테스트코드를 작성해볼 예정  들어가기 전RxTest는 반드시 CocoaPod에서 Tests쪽으로 타겟을 잡아주기!  테스팅ReactorKit의 경우에는 테스트를 위한 함수가 내장되어 있어서, 손쉽게 view와 reacotr 둘 다 테스트 가능. 그렇다면 무엇을 테스트 해야하냐면 총 3가지를 테스트하면 좋음View Action :: 주어진 유저의 상호작용에 따라 적절한 action이 reactor로 보내지는가?State :: 주어진 state에서 view의 변수가 적절하게 set(저장) 되는가?ReactorState :: action에 따라 state가 적절하게 변경되었는가?  리액터킷 테스트코드//// ..

[XCTest] XCTest에 대해서 알아보기 1편

XCTest에 대해서 알아보기 1편  XCTest를 공식문서를 통해 정리Nimble Quick 등도 다시볼겸 정리해보자.사이드 프로젝트에서 테스트코드 작성하면서 점차 더 다양한 테스트를 시도하고 있는데, 정리가 한번 필요할 것 같았음 유닛테스트는 여러 형태로 자주 사용하고 있고,UI테스트는 아직까지 다채롭게 사용하지는 못하는 것 같은데, 자동 완성 기능이 꽤나 쏠쏠해서 특정 플로우에 QA용으로 빠르게 작성해서 테스트 용으로 사용 중임. 퍼포먼스 테스트는 해본 적은 없지만 인스트루먼트 보면서 그냥 거기서 hang걸리거나 부족한 부분 없는지 체크중인데, 성능 최적화 부분에 대해서 컴파일러 최적화 등에 의존하지 않고, 직접 사용하고자 할 경우 특정 핫스팟을 발견해서 작성이 필요하다고는 알고 있음.  ✅ 공식문..

XCTest Stubber

XCTest Stubber테스트코드를 작성하는데 Stubber라는게 있대서 알아보고자 함.  오픈소스 링크https://github.com/devxoul/Stubber GitHub - devxoul/Stubber: A minimal method stub for SwiftA minimal method stub for Swift. Contribute to devxoul/Stubber development by creating an account on GitHub.github.com  배경 네트워크 상황과 관련한 코드를 작성하고 있는데, 이를 활용해 테스트 환경을 더 손쉽게 구축하여 본질에 집중하고자 함.테스트 코드를 작성하면서 네트워크 상에서는 너무 변수가 많은데 이를 하나하나 다 가정하고 테스트 코드를 ..