检验模拟错误 - 参数1预期[UINT8-99]与实际[String -C9D778419A8CE7]

问题描述 投票:0回答:1
Argument1预期[UINT8-99]与实际[String -C9D778419A8CE7]

匹配

实际代码 var isRecordPresentQuery = `SELECT EXISTS (SELECT 1 FROM public.records WHERE "recordHash" = $1)` var addRecordQuery = `INSERT INTO public.records ("fileId", "recordHash" ) VALUES( $1, $2 ) RETURNING "recordId"` hashKey := []string{ "c9d778419a8ce7", "9881d3d5c5f089", "b7c68a247ed250", } count := 0 for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { pgxMock, err := pgxmock.NewPool() if err != nil { t.Fatalf("an error '%s' was not expected when opening a stub database connection", err) } defer pgxMock.Close() for _, line := range tt.input.filelines { if line[0] == byte('6') { recordHash := string(hashKey[count]) pgxMock.ExpectQuery(regexp.QuoteMeta(isRecordPresentQuery)).WithArgs( recordHash, ).WillReturnRows(pgxmock.NewRows([]string{"exists"}).AddRow(false)) pgxMock.ExpectBegin() pgxMock.ExpectQuery(regexp.QuoteMeta(addRecordQuery)).WithArgs( 1, recordHash[count] ).WillReturnRows(pgxmock.NewRows([]string{"recordId"}).AddRow(int64(1))) pgxMock.ExpectCommit() count++ } } pgxMock.ExpectBegin() if tt.expectedError == nil { err = Processor(context.Background(), tt.input.filelines, tt.input.fileid) assert.Nil(t, err) } }) }

我尝试了硬编码值,如果我进行了硬编码哈希值,我不会看到任何问题,但是如果我使用数组,那么我会得到此错误

	

LETS查看您的使用方式。您唯一访问的是:

go mocking
1个回答
0
投票

SO

recordHash := string(hashKey[count])
将包含一个哈希字符串(在第一次迭代中,这将是

recordHash
)。然后使用:

c9d778419a8ce7

用第一次迭代来挑选,
recordHash
将是字符
pgxMock.ExpectQuery(regexp.QuoteMeta(addRecordQuery)).WithArgs(
                        1,
                        recordHash[count]
                    ).WillReturnRows(pgxmock.NewRows([]string{"recordId"}).AddRow(int64(1)))
(ASCII 99)。在字符串上使用

索引驱动
将返回A
recordHash[count]

(单位8

alias)。因此,错误是说您正在比较
c
/byte99(
byte
)与字符串unit8(这将失败)。 我怀疑以下内容会按照您的期望工作:
c
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.