ホームページ  >  記事  >  バックエンド開発  >  Golang で JSON を使用してコードをテストするにはどうすればよいですか?

Golang で JSON を使用してコードをテストするにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-06-02 13:05:561161ブラウズ

Go で JSON を使用するコードをテストすることは非常に重要であり、この記事では次の手順を説明します: JSON データを書き込み、json.Marshal を使用してバイト スライスにエンコードします。 JSON データをデコードし、json.Unmarshal を使用してバイト スライスから構造体まで解析します。

如何在 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。