当在Go语言中将json解组到strike时,s3/sqs事件的单元测试用例是什么?
想到的一个选择是,如果"身体"是空的,但不确定它还能是什么。
代码示例:
type Event struct {
Message string `json:"Message"`
}
func unmarshal(message events.SQSMessage) (s3Event, error) {
var e Event
err := json.Unmarshal([]byte(message.Body), &e)
if err != nil {
return s3Event, err
}
var s3Event events.S3Event
err = json.Unmarshal([]byte(e.Message), &sqsEvent)
if err != nil {
return s3Event, err
}
return s3Event, nil
}
会很感激你的建议。
1条答案
按热度按时间szqfcxe21#
前提:我不确定我是否完全理解了你的问题。此外,代码有一些问题,让我很难弄清楚发生了什么。尽管如此,我将尝试通过提供一个工作软件(它不是很有用)和一个只是为了测试它而编写的软件来帮助你。也许,这可以帮助你弄清楚你的问题。
unmarshal.go
文件我修正了一件事,你应该注意的是你如何命名你的函数。如果你用小写的
u
来调用你的函数unmarshal
,这意味着这个函数不应该从这个包中导出(它是私有的)。所以我用U
来修改名字,因为我认为你想测试这个函数。unmarshal_test.go
文件在这里,您可以找到一段简单的代码,用于测试我们的代码可能采用的两种可能的执行流。
你还应该注意你如何写代码。很难用模拟来替换对
json.Unmarshal
函数的调用,因为它是硬编码到代码中的。如果你希望能够模拟这个函数,你应该依赖于你的产品代码中的接口,并在测试期间用模拟来替换它们。如果这澄清了一些事情,如果你需要其他的东西,请告诉我!