返回

go-无法在时间中提供相等的时间戳值,单元测试gorm时的时间变量

发布时间:2022-04-16 03:33:14 217
# python

我试图编写单元测试。在我开始处理时间安排之前,一切都很好。

"testing"

"github.com/DATA-DOG/go-sqlmock"
"github.com/stretchr/testify/require"
"gorm.io/driver/postgres"
"gorm.io/gorm"

func createDB(t *testing.T) (*DB, sqlmock.Sqlmock) {
    db, mock, err := sqlmock.New()
    require.NoError(t, err)
    require.NotNil(t, db)
    require.NotNil(t, mock)

    dialector := postgres.New(postgres.Config{
        DSN:                  "sqlmock_db_0",
        DriverName:           "postgres",
        Conn:                 db,
        PreferSimpleProtocol: true,
    })

    gormDB, err := gorm.Open(dialector, &gorm.Config{})
    require.NoError(t, err)
    require.NotNil(t, gormDB)

    return &DB{
        gorm: gormDB,
        db:   db,
    }, mock
}
func (db *DB) CreateUser(ctx context.Context, user model.User) error {
    err := db.gorm.Create(&user).Error
    return err
}
timeTest, _ := time.Parse("2006-01-02", "2021-01-14")

sourceUser := models.User{
     CreatedAt: timeTest,
     UpdatedAt: null.NewTime(timeTest, true),
 }
db, mock := createDB(t)
mock.MatchExpectationsInOrder(false)
mock.ExpectBegin()
mock.ExpectExec(regexp.QuoteMeta(`INSERT INTO "user" ("created_at","updated_at") VALUES ($1,$2) RETURNING "id"`)).
 WithArgs(
     sourceUser.CreatedAt,
     sourceUser.UpdatedAt,
     ).WillReturnResult(sqlmock.NewResult(sourceUser.ID, 1))
mock.ExpectCommit()
err := db.CreateUser(context.Background(), &sourceUser)

require.NoError(t, err)

错误:收到意外错误:调用查询“插入到”;“用户”;(“创建时”、“更新时”)价值($1,$2)返回“;id";'不应使用args[{Name:Ordinal:1值:2021-01-14 00:00:00+0000 UTC}{Name:Ordinal:2值:2021-01-14 00:00:00+0000 UTC}];不应调用回滚事务

插入“;“用户”;(“创建时”、“更新时”)值('2021-01-14 00:00:00','2021-01-14 00:00:00')返回“;id";

瓦尔斯2021-01-14 00:00:002021-01-14 00:00:00 +0000 UTC都不一样。我试图用不同的方法解决这个问题,但我找不到正确的方法。如果我像“插入”这样编辑QuoteMeta,它也不起作用

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像