Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menguji kod menggunakan JSON di Golang?

Bagaimana untuk menguji kod menggunakan JSON di Golang?

WBOY
WBOYasal
2024-06-02 13:05:561148semak imbas

Kod ujian yang menggunakan JSON dalam Go adalah penting dan artikel ini menyediakan langkah berikut: Tulis data JSON, pengekodan kepada kepingan bait menggunakan json.Marshal. Nyahkod data JSON, menghuraikan daripada kepingan bait ke struct menggunakan json.Unmarshal.

如何在 Golang 中测试使用 JSON 的代码?

Cara menguji kod yang menggunakan JSON dalam Golang

Kod ujian yang menggunakan JSON di Golang adalah penting untuk memastikan keteguhan aplikasi anda. Artikel ini akan membimbing anda melalui langkah-langkah berikut untuk menguji:

1. Tulis data 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 Nyahkod data 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)
    }
}

Kes praktikal

a fungsi konfigurasi JSON yang dibaca:

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
}

Kes ujian berikut akan mengesahkan bahawa fungsi

membaca fail JSON dengan betul: LoadConfig

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)
    }
}

Atas ialah kandungan terperinci Bagaimana untuk menguji kod menggunakan JSON di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn