【问题标题】:How to mock sql update in go如何在go中模拟sql更新
【发布时间】:2017-11-03 18:49:24
【问题描述】:

我正在尝试编写一个单元测试,用于在 golang 中更新 postgresql 中的记录

数据库功能是

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;

单元测试是

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

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

我还需要在里面模拟选择查询吗?如何模拟 void 函数?

【问题讨论】:

  • 对 Postgres 存储过程进行单元测试的最佳选择是使用 pgTAP

标签: postgresql go


【解决方案1】:

我用过以下包

导入(sql“数据库/sql”)

这使我能够检查以下内容,

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

rows.RowsAffected() 提供更新的行数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 2020-05-26
    • 2016-05-08
    • 2016-02-04
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多