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:00和2021-01-14 00:00:00 +0000 UTC都不一样。我试图用不同的方法解决这个问题,但我找不到正确的方法。如果我像“插入”这样编辑QuoteMeta,它也不起作用
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报