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

在 go 中测试使用 json 的代码至关重要,本文提供了以下步骤:编写 json 数据,使用 json.marshal 编码到字节切片。解码 json 数据,使用 json.unmarshal 从字节切片解析到 struct。如何在 Go

在 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 的代码?的详细内容,更多请关注叮当号网其它相关文章!

文章来自互联网,只做分享使用。发布者:代号邱小姐,转转请注明出处:https://www.dingdanghao.com/article/500660.html

(0)
上一篇 2024-05-17
下一篇 2024-05-17

相关推荐

联系我们

在线咨询: QQ交谈

邮件:442814395@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信公众号