简体   繁体   English

如何在Go中模拟SQL更新

[英]How to mock sql update in go

I'm trying to write a unit test for updating record in postgresql in golang 我正在尝试编写一个单元测试以更新Golang中Postgresql中的记录

database function is 数据库功能是

CREATE OR REPLACE FUNCTION test.update(param_id text, param_data jsonb, id2 text) RETURNS void AS
$$
BEGIN
    UPDATE test.test_table
    SET data = param_data,
    WHERE id = (SELECT id FROM test.test_table2 WHERE name = id2)
END;
$$
LANGUAGE plpgsql;

Unit test is 单元测试是

rows := sqlmock.NewRows([]string{"result"}).AddRow("")

mock.ExpectBegin()
mock.ExpectQuery(fmt.Sprintf("SELECT %v.update(.+)", schema)).WithArgs(1, data).WillReturnRows(rows)
mock.ExpectCommit()

Do I also need to mock the select query inside? 我还需要模拟里面的选择查询吗? How can I mock a void function? 如何模拟void函数?

I've used the following package 我用了以下包装

import (sql "database/sql") 导入(SQL“数据库/ SQL”)

this enables me to check the following, 这使我可以检查以下内容,

.... var rows sql.Result ... <execute query > ... rows.RowsAffected()

rows.RowsAffected() provides the number of rows updated. rows.RowsAffected()提供更新的行数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM