단위 테스트2 [Project coin] 단위 테스트(3) - sync.Once가 포함된 코드 Project coin 경과 니코 선생님의 coin 클론코딩이 거의 막바지이다. 강의가 몇개 남지 않았지만 테스트 코드를 싹싹 핥아 먹으며 공부하기 위해 강의를 보기 전 테스트 코드를 만들고 강의를 보고 있다. 문제 발생 스스로 테스트 코드를 만들며 아무리 생각해도 이상한 현상을 발견했다. 테스트하려는 코드 func Blockchain() *blockchain { once.Do(func() { b = &blockchain{ Height: 0, } checkpoint := 블록체인_불러오기() if checkpoint == nil { //새로운 블록 추가 } else { //기존 블록체인 변수 b에 할당 } }) return b } 테스트 코드 func TestBlockchain(t *testing.T) .. 2022. 8. 19. [Project Coin] 단위 테스트(2) - 추상화를 적용한 함수 테스트, + 몽키 패치 Test를 위한 함수 추상화 log.Panic이라는 함수는 log 모듈에 의존적인 함수이다. 이를 직접적으로 테스트하기는 힘들다. 그렇기에 우리는 추상화라는 선택지를 고려할 수 있다. 기존 코드 func HandleErr(err error) { if err != nil { log.Panic(err) } } 변경 코드 var logFn = log.Panic func HandleErr(err error) { if err != nil { logFn(err) } } 우리가 궁금한 것은 err!=nil 일 때 logFn이 작동하는가 이다. 그렇기에 log.Panic 함수를 logFn 이라는 변수에 담아 추상화 과정을 거쳐 이 logFn이 잘 작동하는가를 검사한다. TestCode func TestHandleErr.. 2022. 8. 12. 이전 1 다음