Tester le code qui utilise JSON dans Go est crucial, et cet article propose les étapes suivantes : Écrivez des données JSON, encodant en tranches d'octets à l'aide de json.Marshal. Décodez les données JSON, en analysant la tranche d'octets en structure à l'aide de json.Unmarshal.
Comment tester le code qui utilise JSON dans Golang
Tester le code qui utilise JSON dans Golang est essentiel pour garantir la robustesse de votre application. Cet article vous guidera à travers les étapes suivantes pour tester :
1. Écrire des données 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. Décoder des données 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) } }
Cas pratique
Considérons une fonction qui lit un fichier de configuration 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 }
Le scénario de test suivant vérifiera que la fonction LoadConfig
lit correctement le fichier 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) } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!