Go 哥朗结构单元试验

Go 哥朗结构单元试验,go,Go,我使用VSCode生成项目的测试文件 当前,它生成以下结构 tests := []struct { name string args args wantOut ZTR }{ name: "test123", args: args{ ztrFile: "./testdata/ztrfile.yaml", }, wantOut: “ZTR.Mod

我使用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",
        }
我犯的错误是

消息:“不能将“test123”(类型字符串)用作数组或切片文本中的类型结构{name string;args args;wantOut ZTR}” 在:'41,3' 来源:“”
代码:“未定义”

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

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",
    },
}

哪一行是您的源代码的第41行?@Flimzy-
名称:“test123”
,我在
wantOut上也出现了错误:“ZTR.Modules”,
您缺少了一些大括号。请记住,您在结构片中为其提供了条目。非常感谢这解决了问题,最后一个问题现在我在
wantOut
中出现了错误,我应该在那里放什么?例如,如果
模块的名称应类似
name=“just name”
type=“justType”
I usderstad这就是我想要验证的
预期的
但是我应该如何将其放在那里?在不知道错误是什么的情况下很难回答您的问题。如果我需要验证结构解析的输出,我应该如何将其放在那里,当我放置
wantOut:Modules,
I Get error
typ时,任何示例都会有所帮助e模块不是表达式