登录
首页 >  Golang >  Go问答

如何在测试中检查该方法是否返回具有指定持续时间的 time.ticker?

来源:stackoverflow

时间:2024-04-12 17:21:29 471浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《如何在测试中检查该方法是否返回具有指定持续时间的 time.ticker?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

如何测试此方法中的正确返回值?

func createticker(dur time.duration) *time.ticker {
    return time.newticker(dur * time.second)
}
func testcreateticker(t *testing.t) {
    type args struct {
        dur time.duration
    }
    var (
        ticker = time.newticker(12)
    )

    tests := []struct {
        name string
        args args
        want *time.ticker
    }{
        {
            name: "test",
            args: args{dur: 12},
            want: ticker,
        },
    }
    for _, tt := range tests {
        t.run(tt.name, func(t *testing.t) {
            if got := createticker(tt.args.dur); !reflect.deepequal(got, tt.want) {
                t.errorf("createticker() = %v, want %v", got, tt.want)
            }
        })
    }
}

当我运行测试时,我收到错误消息,表明对象不相同。

--- FAIL: TestCreateTicker (0.00s)
    --- FAIL: TestCreateTicker/test. (0.00s)
      CreateTicker() = &{0xc000062360 {824633909248 32883400129906 12000000000 0x471bc0 0xc000062360 0 0 1}}, want &{0xc0000622a0 {824633909248 32871400127913 12 0x471bc0 0xc0000622a0 0 0 1}}
FAIL
...

正确答案


如果您确实想对此进行测试,则必须实际测量计时器发出两次滴答声所需的时间,并检查增量是否在可接受的范围内。对于一个不是很有用的测试来说,这是一个很大的努力,并且您的测试与代码比率已经显示出相当差的投资回报,25 行测试覆盖了 1 行函数。

更好的解决方案是不测试这个。这是调用标准库函数的单行代码,您可以假设它已经过充分测试。

以上就是《如何在测试中检查该方法是否返回具有指定持续时间的 time.ticker?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>