如何在我的测试中检查方法 returns a time.ticker 是否具有指定的持续时间?
How can I check in my test that the method returns a time.ticker with the specified duration?
如何在此方法中测试正确的 return 值?
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
...
如果你真的想测试这个,你必须实际测量计时器发出两个滴答声需要多长时间,并检查增量是否在可接受的范围内。对于一个不是很有用的测试来说,这是很大的努力,而且你的 test-to-code 比率已经显示出相当差的 return 投资,25 行测试覆盖了 1 行函数。
更好的解决办法是不测试这个。这是调用标准库函数的单行代码,您可以假设它已经过良好测试。
如何在此方法中测试正确的 return 值?
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
...
如果你真的想测试这个,你必须实际测量计时器发出两个滴答声需要多长时间,并检查增量是否在可接受的范围内。对于一个不是很有用的测试来说,这是很大的努力,而且你的 test-to-code 比率已经显示出相当差的 return 投资,25 行测试覆盖了 1 行函数。
更好的解决办法是不测试这个。这是调用标准库函数的单行代码,您可以假设它已经过良好测试。