我正在尝试检查返回的数据是否等于期望
这是我的功能:
func extractData(payload string) (interface{}, time.Time, error) {
eventTime := gjson.Get(payload, "data.eventDateTime").String()
dateTime, err := time.Parse("2006-01-02T15:04:05-07:00", eventTime)
if err != nil {
return nil, time.Time{}, fmt.Errorf("Date Time Error: %w", err)
}
body := data.Body{
EventTime: dateTime,
}
return body, dateTime, nil
}
Run Code Online (Sandbox Code Playgroud)
这是我为其编写的单元测试:
func TestExtractData(t *testing.T) {
tests := []struct {
Name string
Payload string
ExpectedOutput interface{}
}{
{
Name: "test-2",
Payload: "{\"data\":\"2020-11-02T10:44:48+01:00\"}",
ExpectedOutput: data.Body{
EventTime: time.Date(2020, 11, 2, 10, 44, 48, 0, time.FixedZone("CET", 3600)),
},
},
}
for …Run Code Online (Sandbox Code Playgroud) 我有时厌倦了for i := 0; i < 7; i++ {为不需要循环迭代器的恒定数量的循环编写 ForClause循环。我有时希望我可以使用范围和整数,for range 7 {但这是无效的。我发现你可以使用for range [7]int{} {.
这似乎很好:
package kata
import (
"runtime"
"testing"
)
const times = 100_000
func BenchmarkLoop(b *testing.B) {
b.Run("For", func(b *testing.B) {
for j := 0; j < b.N; j++ {
for i := 0; i < times; i++ {
runtime.Gosched()
}
}
})
b.Run("Range", func(b *testing.B) {
for j := 0; j < b.N; j++ {
for range [times]int{} …Run Code Online (Sandbox Code Playgroud)