douzhi1919 2017-07-12 00:39
浏览 97
已采纳

如何在Golang中测试恐慌?

func good(json) string {

  \\do something
 err = json.Unmarshal(body, &list)
 if err != nil {
    panic(fmt.Sprintf("Unable to parse json %s",err))
 }

}

func Testgood_PanicStatement(t *testing.T) {
  Convey("And Invalid Json return error",t, func() {
    actual := good("garbage json")
    So(func() {},shoulPanic)
    So(actual ,ShouldEqual,"")
  }
}

Outcome

Line 34: - Unable to parse json ,{%!e(string=invalid character '{' looking for beginning of object key string) %!e(int64=50)}

goroutine 8 [running]:

Question:It seems like when I am passing garbage json file.It is panicking and doesn't execute any of the So statements?How to fix it?

  • 写回答

2条回答 默认 最新

  • duanjing7298 2017-07-12 01:18
    关注

    Use recover().

    func Testgood_PanicStatement(t *testing.T) {
      Convey("And Invalid Json return error",t, func() {
        defer func() {
          if r := recover(); r != nil {
            So(func() {},shouldPanic)
            So(actual ,ShouldEqual,"")
          }
        }()
        actual := good("garbage json")
      }
    }
    

    Lear more about:

    1. Golang blog
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?