Golang:如何生成net / http超时错误以执行单元测试

时间:2019-04-22 08:23:29

标签: unit-testing go

我有一段类似下面的代码:

if timeoutErr, ok := err.(net.Error); ok && timeoutErr.Timeout() {
    // Some code that need to test
}

如何生成一个可以与此处的条件匹配的错误,这样代码才能通过if。

1 个答案:

答案 0 :(得分:1)

Error是一个接口:

type Error interface {
        error
        Timeout() bool   // Is the error a timeout?
        Temporary() bool // Is the error temporary?
}

要实现它,您需要做(未测试)之类的事情:

type MyError struct {
  error
}

func (e MyError) Timeout() bool {
  return true
}

func (e MyError) Temporary() bool {
  return true
}

func (e MyError) Error() string {
  return ""
}

请注意,您也必须实现Error(),因为Error嵌入了error