[TDD] 네트워킹

Updated:

네트워킹

MVC-N 아키텍처 패턴

Model, View, Controller의 MVC 아키텍처 패턴에서 Networking 요소를 추가한 아키텍처 패턴을 MVC-N 아키텍처 패턴이라고 한다.

  • networking clinet 라는 곳에 네트워크 관련 로직을 모두 담아놓음으로 인해서 관리하기 쉬워진다.
  • 반복적으로 사용되는 네트워크 코드를 줄여준다.

네트워크 코드를 테스트하려면 어떻게 해야할까?

  • 플랫폼 기기나 네트워크 같은 외부 요소에 의존성이 있는 코드를 작성할 때는 관련 클래스를 Mocking 하여 Mock 클래스를 만든다.
  • 이때 Mocking을 할때는 관련 클래스를 상속받아 테스트에 필요한 메서드를 override 해준다.

예를 들어, 네트워크 데이터를 받아오기 위해 URLSession 클래스를 이용한다고 하면,

URLSession

실제 네트워크 콜을 해서 테스트를 할 순 없으니 가짜 콜을 만들기 위해 URLSession 클래스를 상속받아 특정 메서드를 override 하는 것이다.

class MockURLSession: URLSession {
  override func dataTask(with url: URL, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask {
    return MockURLSessionDataTask(completionHandler: completionHandler, url: url)
  }
}

이렇게 MockURLSession 클래스를 이용해서 dataTask 메서드를 호출하면 네트워크 실제 네트워크 통신을 하는 것이 아니라 가짜 네트워크 통신을 하게 된다.

Categories: , ,

Updated:

Leave a comment