亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQLMock and Gorm: Mocking Postgres Insert

SQLMock and Gorm: Mocking Postgres Insert

Go
慕村9548890 2022-08-24 20:29:57
當我嘗試使用SQLMock模擬Postgres插入并 Gorm.io 時,我收到一個錯誤,指出查詢不是預期的。我試圖用它來包裝和轉義我的字符串,但它不起作用。我添加并刪除了參數和結果,但錯誤繼續出現regexp.QuoteMeta()如何通過 SQLMock 設置預期的查詢?我給你原始的PostgresQuery和UserModel//RAW QUERYINSERT INTO "users" ("id","name","surname","birthdate","company","custom_claims","deleted") VALUES ($1,$2,$3,$4,$5,$6,$7)' with args [{Name: Ordinal:1 Value:my_user_id} {Name: Ordinal:2 Value:<nil>} {Name: Ordinal:3 Value:<nil>} {Name: Ordinal:4 Value:<nil>} {Name: Ordinal:5 Value:<nil>} {Name: Ordinal:6 Value:<nil>} {Name: Ordinal:7 Value:<nil>}]//Gorm modeltype User struct {    ID           string `gorm:"primaryKey"`    Name         *string    Surname      *string    Birthdate    *time.Time    Company      *string    CustomClaims *json.RawMessage    Deleted      gorm.DeletedAt}func (repository Repository) CreateUser(user users.User) (*users.User, error) {    newUser := toRepositoryModel(user)    err := repository.db.Create(newUser).Error //db -> *gorm.DB    //....}//TESTconst expectedQuery = `INSERT INTO "users" ("id","name","surname","birthdate","company","custom_claims","deleted") VALUES ($1,$2,$3,$4,$5,$6,$7)' with args [{Name: Ordinal:1 Value:my_user_id} {Name: Ordinal:2 Value:<nil>} {Name: Ordinal:3 Value:<nil>} {Name: Ordinal:4 Value:<nil>} {Name: Ordinal:5 Value:<nil>} {Name: Ordinal:6 Value:<nil>} {Name: Ordinal:7 Value:<nil>}]`suite.mock.ExpectQuery(regexp.QuoteMeta(experctedQuery)) //HOW SHOULD BE MODIFIED?user, err2 := postgres.CreateUser(users.User{   ID: ID,})
查看完整描述

1 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

我已經讓它工作了。


suite.mock.ExpectExec(regexp.QuoteMeta(`INSERT INTO "users" ("id","name","surname","birthdate","company","custom_claims","deleted") VALUES ($1,$2,$3,$4,$5,$6,$7)`)).WithArgs(ID, nil, nil, nil, nil, nil, nil).WillReturnResult(sqlmock.NewResult(0, 1))

更新


Postgres SELECT :


//Simulate returned row(s)

userMockRows := sqlmock.NewRows([]string{"id", "name", "surname", "birthdate", "company", "custom_claims", "deleted"}).AddRow(ID, nil, nil, nil, nil, nil, nil)


//Expect SELECT

suite.mock.ExpectQuery(regexp.QuoteMeta(`SELECT * FROM "users" WHERE id = $1`)).WithArgs(ID).WillReturnRows(userMockRows)

Postgres UPDATE:


suite.mock.ExpectExec(regexp.QuoteMeta(`UPDATE "users" SET "name"=$1,"surname"=$2,"birthdate"=$3,"company"=$4,"custom_claims"=$5,"deleted"=$6 WHERE "id" = $7`)).WithArgs(newName, nil, nil, nil, nil, nil, ID).WillReturnResult(sqlmock.NewResult(0, 1))


查看完整回答
反對 回復 2022-08-24
  • 1 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號