猿问

测试函数不返回值

我正在对此Go文件进行测试。我很困惑为什么它有问题工作。


func TestMy(t *testing.T) {

    arr := map[string]string{

        RandomOwner(): RandomString(9),

        RandomOwner(): RandomString(9),

        RandomOwner(): RandomString(9),

        RandomOwner(): RandomString(9),

        RandomOwner(): RandomString(9),

        RandomOwner(): RandomString(9),

        RandomOwner(): RandomString(9),

        RandomOwner(): RandomString(9),

        RandomOwner(): RandomString(9),

        RandomOwner(): RandomString(9),

    }

    ds := DataSourceStr{

        data: arr,

    }


    for k, v := range ds.data {

        //create dataset in datasource value method

        res, err := ds.Value(k)

        fmt.Println(res)

        if err != nil {

            t.Errorf("%T does not implement Value method correctly, key %v not found", ds, k)

        }

        if res != v {

            t.Errorf("%T does not implement Value correctly. Expected %v but recieved %v: %v", ds, v, res, err)

        }

        return res, err

    }

它为上面的函数返回此错误,


/home/incompleteness_hewlbern/Documents/Code_Projects/Tests/nearmap/Private_test_golang/datasource/datasource_test.go:64:3: too many arguments to return

    have (interface {}, error)

    want ()

我犯了什么错误,我应该在函数中设置类型吗?我如何简单地在函数中打印内容以测试正在发生的事情(它似乎不会显示在控制台中)。


白衣非少年
浏览 134回答 1
1回答

慕村225694

测试函数不返回任何内容,测试要么通过,要么失败(不符合预期),在这种情况下,用于向 执行的测试驱动程序发出失败信号。t.Errorf()go test ...查看 https://golang.org/pkg/testing/在您的示例函数中,函数具有不返回任何内容的签名:但尝试返回因此错误。将循环的最后一行更改为满足测试函数的签名并提前失败或完全删除该行(取决于所需的测试逻辑)将解决问题。func TestMy(t *testing.T) {(interface {}, error)return res, errreturn
随时随地看视频慕课网APP

相关分类

Go
我要回答