首頁  >  文章  >  後端開發  >  如何在 Golang 中測試使用 JSON 的程式碼?

如何在 Golang 中測試使用 JSON 的程式碼?

WBOY
WBOY原創
2024-06-02 13:05:561145瀏覽

在 Go 中測試使用 JSON 的程式碼至關重要,本文提供了以下步驟:編寫 JSON 數據,使用 json.Marshal 編碼到位元組切片。解碼 JSON 數據,使用 json.Unmarshal 從位元組切片解析到 struct。

如何在 Golang 中测试使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn