GoLang의 종속성 주입으로 디버깅을 간편하게

4015 단어 testinggo
종속성 주입은 함수 내에서 종속성을 제거하는 아이디어이며 그렇게 함으로써 보다 탄력적인 코드베이스를 구축하는 데 도움이 됩니다.

함수에서 종속성을 제거하면 테스트를 보다 간단하게 수행할 수 있으므로 디버그하기가 더 쉬워집니다.

종속성 주입을 더 잘 이해하기 위해 테스트 기반 개발을 사용하는 예제가 표시됩니다.

예시



단일 사용자 정보를 포함하는 user.json라는 파일이 있고 함수를 통해 나이를 얻고 싶다고 가정합니다.

데이터 구조




// user.json
{
  "age": 34
}


기능




type User struct {
 Age int `json:"age"`
}
// GetUserData opens a file and returns a piece of data
func GetUserData(fPath String) (String, error) {
 userFile, err := os.Open(fPath)
 if err != nil {
 fmt.Println(err)
 }
 byteValue, _ := ioutil.ReadAll(userFile)
 var u User
 json.Unmarshal(byteValue, &u)
 return u
}


테스트 기능




func TestGetUserData(t *testing.T) {
 t.Parallel()
 got, _ := GetUserData("../test/resources/user.json")
 s := fmt.Sprint(got)
 if s == "" {
 t.Errorf("Wanted %s got %s", got, s)
 }
}


종속성



위의 기능이 작동하고 테스트도 작동합니다. 그러나 다음과 같은 종속성이 도입되었습니다.

continue reading...

좋은 웹페이지 즐겨찾기