如何在 Go 测试中断言错误类型?

我有一个如下定义的错误类型


type RetryableError struct {

    msg string

}


func (a *RetryableError) Error() string {

    return a.msg

}

在单元测试中,如果返回的错误是类型,Go 断言的方式是什么RetryableError?


红糖糍粑
浏览 124回答 2
2回答

青春有我

使用类型断言:err := someFunc()if retryable, ok := err.(*RetryableError); ok {   // use retryable}你的RetryableError不是错误,而是*RetryableError错误。纠正:func (a RetryableError) Error() string {    return a.msg}

牧羊人nacy

assert.IsType来自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)    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go