Go에서 JSON을 사용하는 코드를 테스트하는 것은 매우 중요하며 이 문서에서는 다음 단계를 제공합니다. JSON 데이터를 작성하고 json.Marshal을 사용하여 바이트 슬라이스로 인코딩합니다. json.Unmarshal을 사용하여 바이트 슬라이스에서 구조체로 구문 분석하여 JSON 데이터를 디코딩합니다.
Golang에서 JSON을 사용하는 코드를 테스트하는 방법
Golang에서 JSON을 사용하는 코드를 테스트하는 것은 애플리케이션의 견고성을 보장하는 데 중요합니다. 이 문서에서는 테스트를 위한 다음 단계를 안내합니다.
1. JSON 데이터 쓰기
import ( "encoding/json" "fmt" "testing" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func TestEncodeJSON(t *testing.T) { person := Person{Name: "John", Age: 30} b, err := json.Marshal(person) if err != nil { t.Errorf("Error encoding JSON: %v", err) } expected := `{"name":"John","age":30}` if string(b) != expected { t.Errorf("Expected '%s', got '%s'", expected, string(b)) } }
2. JSON 데이터 디코딩
func TestDecodeJSON(t *testing.T) { jsonStr := `{"name":"Mary","age":25}` person := Person{} err := json.Unmarshal([]byte(jsonStr), &person) if err != nil { t.Errorf("Error decoding JSON: %v", err) } expected := Person{Name: "Mary", Age: 25} if person != expected { t.Errorf("Expected '%v', got '%v'", expected, person) } }
실용 사례
JSON 구성 파일을 읽는 함수를 고려하세요.
func LoadConfig(path string) (Config, error) { b, err := ioutil.ReadFile(path) if err != nil { return Config{}, err } config := Config{} err = json.Unmarshal(b, &config) if err != nil { return Config{}, err } return config, nil }
다음 테스트 사례에서는 LoadConfig
함수가 JSON 파일을 올바르게 읽는지 확인합니다.
func TestLoadConfig(t *testing.T) { // 创建一个包含 JSON 数据的临时文件 f, err := ioutil.TempFile("", "config") if err != nil { t.Errorf("Error creating temporary file: %v", err) } defer os.Remove(f.Name()) _, err = f.WriteString(`{"key":"value"}`) if err != nil { t.Errorf("Error writing to temporary file: %v", err) } if err := f.Close(); err != nil { t.Errorf("Error closing temporary file: %v", err) } config, err := LoadConfig(f.Name()) if err != nil { t.Errorf("Error loading config: %v", err) } expected := Config{Key: "value"} if config != expected { t.Errorf("Expected '%v', got '%v'", expected, config) } }
위 내용은 Golang에서 JSON을 사용하여 코드를 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!