go - 具有结构的golang单元测试

标签 go

我使用 VSCode 生成我项目的测试文件,

当前它生成以下结构

tests := []struct {
        name    string
        args    args
        wantOut ZTR
    }{
        name: "test123",
        args: args{
            ztrFile: "./testdata/ztrfile.yaml",
        },
        wantOut: “ZTR.Modules",
    }

测试应该包括yaml的解析和属性测试

这里调用解析文件

for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if gotOut := parseFile(tt.args.ztrFile); !reflect.DeepEqual(gotOut, tt.wantOut) {
                t.Errorf("parseFile() = %v, want %v", gotOut, tt.wantOut)
            }
        })

这是结构

type Modules struct {
    Name       string
    Type       string
    cwd       string     `yaml:”cwd,omitempty"`
}

不确定我需要在此处放置什么才能使其正常工作,我尝试使用这些类型但出现错误

        {
            name: "test123",
            args: args{
                mtaFile: "./testdata/ztrfile.yaml",
            },
            wantOut: “ZTR.Modules",
        }

我得到的错误是

message: '不能使用“test123”(字符串类型)作为结构类型 { name string;参数参数; wantOut ZTR } 在数组或 slice 文字中' 在:'41,3' 资源: '' 代码:'未定义'

最佳答案

您的 tests 声明不正确。您需要提供一片结构,但您只提供键/值:

tests := []struct {
    name    string
    args    args
    wantOut ZTR
}{
    name: "test123",
    args: args{
        mtaFile: "./testdata/ztrfile.yaml",
    },
    wantOut: “ZTR.Modules",
}

应该是:

tests := []struct {
    name    string
    args    args
    wantOut ZTR
}{
    {
        name: "test123",
        args: args{
            mtaFile: "./testdata/ztrfile.yaml",
        },
        wantOut: “ZTR.Modules",
    },
}

关于go - 具有结构的golang单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49557658/

相关文章:

for-loop - 由于我的 if 语句,我的 for 循环停止处理

go - 可执行文件 ("main"包中的公共(public)名称)

json - 将 json.RawMessage 转换为结构的正确方法是什么?

multithreading - Golang线程不是每次都执行

mongodb - Go mongo-driver无法连接到mongodb容器

Golang多维 slice 复制

go - 在 go http 处理程序中使用 goroutine 和 channel 使 ResponseWriter 被阻塞

pointers - Golang 处理 nil 指针异常

go - 为这个用例构建 go 项目

go - 使用 gocron 调度程序在特定日期的特定时间安排作业