테스트 원칙(2)

공개하지 않아야 않아야 하는 데이터를 검증하는 테스트 작성하지 않기

  • 로그인 정보와 같이 숨겨야 하는 데이터를 이용하는 테스트는 작성하지 않아야 한다.
  • ofType(), beInstanceOf()와 같은 메서드를 활용하여 데이터를 드러내지 않는 테스트를 작성하자.

예시

  • 테스트 대상
    suspend fun login(id: String, password: String) {
      val request = LoginRequest(id, password)
      server.send(request)
    }
    


  • 잘못된 테스트1
    context("로그인하면") {
      repository.login(id, password)
            
      test("서버로 로그인 요청을 전송한다") {
          // 로그인 요청이 아이디와 비밀번호를 포함한다는 것을 알 수 있다
          val request = LoginRequest(id, password)
            
          coVerify { server.send(request) }
      }
    }
    


  • 괜찮은 테스트
    context("로그인하면") {
      repository.login(id, password)
    
      test("서버로 로그인 요청을 전송한다") {
          // 요청의 타입을 밝히지 않는 경우
          coVerify { server.send(any()) }
      }
    
      test("서버로 로그인 요청을 전송한다") {
          // 요청의 타입을 밝히는 경우
          coVerify { server.send(ofType<LoginRequest>()) }
      }
    }
    



1로그인 요청이 포함하는 정보를 공개한다.