我有如下定义的错误类型
type RetryableError struct {
msg string
}
func (a *RetryableError) Error() string {
return a.msg
}
在单元测试中,如果返回的错误是RetryableError
类型,则断言的Go方法是什么?
答案 0 :(得分:4)
使用类型断言:
err := someFunc()
if retryable, ok := err.(RetryableError); ok {
// use retryable
}
答案 1 :(得分:2)
来自 https://medium.com/@sebdah/go-best-practices-testing-3448165a0e18 的片段:
func TestDivision(t *testing.T) {
tests := []struct{
x float64
y float64
result float64
err error
}{
{ x: 1.0, y: 2.0, result: 0.5, err: nil },
{ x: -1.0, y: 2.0, result: -0.5, err: nil},
{ x: 1.0, y: 0.0, result: 0.0, err: ErrZeroDivision},
}
for _, test := range tests {
result, err := divide(test.x, test.y)
assert.IsType(t, test.err, err)
assert.Equal(t, test.result, result)
}
}