Successfully reported this slideshow.
Your SlideShare is downloading. ×

그래서 테스트 코드는 어떻게 작성하나요?.pdf

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 57 Ad

그래서 테스트 코드는 어떻게 작성하나요?.pdf

Download to read offline

Let'Swift 2022 '그래서 테스트 코드는 어떻게 작성하나요?' 에서 사용된 발표 자료입니다.
https://letswift.kr/2022/ 참고

Let'Swift 2022 '그래서 테스트 코드는 어떻게 작성하나요?' 에서 사용된 발표 자료입니다.
https://letswift.kr/2022/ 참고

Advertisement
Advertisement

More Related Content

Recently uploaded (20)

Advertisement

그래서 테스트 코드는 어떻게 작성하나요?.pdf

  1. 1. 윤중현 그래서 테스트 코드는 어떻게 작성하나요? 저는 이렇게 해요! Vivarepublica (Toss) / https://github.com/tokijh
  2. 2. 실습에 앞서.. https://letswift.kr/2018
  3. 3. 오늘 진행할 프로젝트 GitHub Search
  4. 4. 오늘 진행할 프로젝트 GitHub Search https://github.com/tokijh/LetsTest-GitHubSearch
  5. 5. 설계 MVVM ViewController ViewModel Service Click Search API Call & return [Repository] Show Repositories Show on TableView Delegate
  6. 6. 설계 RepositoryListViewController
  7. 7. 설계 RepositoryListViewModel
  8. 8. 설계 GitHubRepositorySearchService
  9. 9. 동작 1. searchButtonClicked() 2. viewModel.search() 3. service.searchRepositories() 4. completion(.success(…)) 5. delegate.showRepositories() 6. tableView.reload()
  10. 10. 동작 1. searchButtonClicked() 2. viewModel.search() 3. service.searchRepositories() 4. completion(.success(…)) 5. delegate.showRepositories() 6. tableView.reload() View ViewModel Service
  11. 11. 동작 ViewModel •이벤트를 입력 받아 •데이터를 요청하고 •데이터를 취합해서 •데이터를 가공 후 •화면에 표시할 수 있도록 전달함
  12. 12. Test ViewModel 🤔
  13. 13. Mocking/Stubbing 내 코드를 속이다
  14. 14. Mocking/Stubbing 😃 내 코드를 속이다
  15. 15. Mocking/Stubbing 내 코드를 속이다 😦 ???
  16. 16. Test ViewModel
  17. 17. Test ViewModel 💪 💪 인터넷의 유무에 따라서 성공/실패
  18. 18. 관심사 (의존성) 분리 실제 필요한 함수는
  19. 19. 관심사 (의존성) 분리 Protocol
  20. 20. 관심사 (의존성) 분리
  21. 21. 관심사 (의존성) 분리 🤔
  22. 22. 관심사 (의존성) 분리 RepositoryListViewModel 의 관심사 X
  23. 23. 관심사 (의존성) 분리 😃
  24. 24. 관심사 (의존성) 분리 GitHubRepositorySearchService() 를 필요로 하는 친구 그럼 누가 생성함? ex • App • 상위 (이전) 화면
  25. 25. 관심사 (의존성) 분리
  26. 26. 관심사 (의존성) 분리 DI (Dependency Injection)
  27. 27. Test ViewModel
  28. 28. Test ViewModel
  29. 29. 버그 발견! Star 수가 이상해요!
  30. 30. 버그 발견! …. 😑
  31. 31. 버그 발견! 👍
  32. 32. 버그 재발 방지 또 같은 증상이 발생할 수는 없잖아? 😉
  33. 33. TDD? star 수에 1,234 개 처럼 , 를 표시해주세요
  34. 34. TDD? RED GREEN REFACTOR
  35. 35. TDD? 테스트 코드부터 작성
  36. 36. TDD? 로직 수정
  37. 37. Test View 1. searchButtonClicked() 2. viewModel.search() 3. service.searchRepositories() 4. completion(.success(…)) 5. delegate.showRepositories() 6. tableView.reload() View ViewModel Service
  38. 38. Test View
  39. 39. Test View 🤷
  40. 40. Test View 🙏 View 를 어떻게 속이느냐의 문제…
  41. 41. Test View searchButtonClicked() 🙏
  42. 42. Test View present() 🙏
  43. 43. Test Service 1. searchButtonClicked() 2. viewModel.search() 3. service.searchRepositories() 4. completion(.success(…)) 5. delegate.showRepositories() 6. tableView.reload() View ViewModel Service
  44. 44. Test Service
  45. 45. Test Service Protocol
  46. 46. Test Service Protocol
  47. 47. AppDelegateStub 여기서 방문자 수를 측정 한다면?
  48. 48. AppDelegateStub 여기서 방문자 수를 측정 한다면? 방문자 수 ≠ 😱
  49. 49. AppDelegateStub
  50. 50. @main https://github.com/apple/swift-evolution/blob/main/proposals/0281-main-attribute.md Swift 5.3 부터 지원 Like C 언어의 main 함수
  51. 51. AppDelegateStub
  52. 52. Stub https://github.com/tokijh/Stub
  53. 53. Stub https://github.com/tokijh/Stub
  54. 54. Testables https://github.com/StyleShare/Testables
  55. 55. Testables https://github.com/StyleShare/Testables
  56. 56. Testables https://github.com/StyleShare/Testables

×