小编Bra*_*ken的帖子

去assert.Equal一些带有time.Time对象的接口

我正在尝试检查返回的数据是否等于期望

这是我的功能:

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)

unit-testing go testify go-testing

2
推荐指数
1
解决办法
1万
查看次数

遍历数组是编写简单循环的不好方法吗?

我有时厌倦了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)

loops go

-1
推荐指数
1
解决办法
89
查看次数

标签 统计

go ×2

go-testing ×1

loops ×1

testify ×1

unit-testing ×1