我有以下代码:
func policyDocumentToStr(doc map[string]interface{}) (*string, error) {
policy, err := json.Marshal(doc)
if err != nil {
log.Debugf("Error converting policy document to string. Error %s", err)
return nil, err
}
policyAsString := string(policy)
return &policyAsString, nil
}
我想编写一个单元测试来涵盖 json.Marshal(doc)
返回错误的情况。有人可以建议我如何产生错误吗?什么样的函数输入会导致 policy, err := json.Marshal(doc)
行错误?
最佳答案
为其提供一个无法用 JSON 表示的值。有很多方法可以做到这一点,包括创建一个带有始终返回错误的自定义编码(marshal)拆收器的类型。但最简单的方法之一是尝试编码 channel :
x := map[string]interface{}{
"foo": make(chan int),
}
_, err := json.Marshal(x)
fmt.Printf("Marshal error: %s\n", err)
关于json - 如何为 json.Marshal 的失败案例编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48898542/