问题标签 [go-sqlmock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
151 浏览

sql-server - 在 sqlmock 中测试 MSSQL 表值参数

我有一个函数,旨在使用表值参数和过程将大量元素插入 MSSQL 数据库。

我为这个函数写的测试包括在下面(注意它取决于银杏和gomega):

现在,这段代码是为 MySQL 上下文编写的,自从我将代码移植到 MSSQL 后,我遇到了一个特殊的错误:

似乎 sqlmock 正在尝试调用ConvertValue无效的 TVP 对象。那么,如何让 sqlmock 正确处理这个值,以便我可以围绕查询进行单元测试?

0 投票
1 回答
265 浏览

go - 预计不会调用查询 [...]

我想测试一个数据库查询。为此,我尝试使用 sqlmock 库。可悲的是我没有找到解决方案

我的测试是

我的代码看起来像这样

如果我运行测试,我会收到以下错误

如果调用了查询,我该如何检查?

0 投票
0 回答
390 浏览

go - 测试 row.scan 时如何模拟 sqlmock 错误

我正在尝试模拟以下功能。我正在努力让它测试 rows.next() 返回。

这是我的测试用例:

我得到的错误是:

使用 args [] 调用 Query 'SELECT (.+) FROM user' 不是预期的,下一个预期是:ExpectedPrepare => 期待 Prepare 语句,其中:

  • 匹配 sql: 'SELECT (.+) FROM user'

知道错误可能在哪里吗?

0 投票
1 回答
125 浏览

unit-testing - 当我的程序中有并发查询时如何使用 go-sqlmock?

sqlmock需要按顺序匹配 SQL。但是,如果我的代码中有并发查询,就像这样:

据说我们无法知道SQL的执行顺序。所以我不知道如何使用sqlmock来正确匹配sql。

0 投票
0 回答
770 浏览

unit-testing - Sqlmock + Gorm 失败并出现错误“不支持的数据类型:&[]”

我尝试用 sqlmock 测试 gorm 的东西。

我的模型看起来像:

我收到以下错误:

考试:

功能:

Build 只是一个返回的助手*gorm.DB

运行该示例按预期工作,但尝试对其进行单元测试失败。

0 投票
1 回答
90 浏览

go - 在不同的 DAO 中使用相同的 DB 事务

我在我的一个 Golang 应用程序中有一个用例来更新 API 中的多个表,如果其中一个更新失败,我希望所有以前的更新都回滚(Java 中的 @Transactional 所做的事情)。我尝试通过以下方式进行操作:

但这不起作用,因为我们在 Update1 和 Update2 方法中创建了一个新事务。所以我尝试在方法 Update1 和 Update2 的方法参数中传递事务,如下所示:

但问题是在某些用例中,我只想调用方法 Update1。在这种情况下,要在 Update1 方法中传递的事务的值应该是多少?

或者有没有更好的方法来做到这一点。有人可以帮忙吗?

0 投票
1 回答
771 浏览

go - SQLMock 和 Gorm:模拟 Postgres 插入

当我尝试使用 SQLMock 和 Gorm.io 模拟 Postgres 插入时,我收到一个错误,表明查询不是预期的。我试图用它regexp.QuoteMeta()来包装和转义我的字符串,但它不起作用。我添加并删除了args和结果,但错误仍然出现

如何通过 SQLMock 设置预期的查询?

我给你原始的 PostgresQuery 和 UserModel

0 投票
1 回答
238 浏览

go - 一个 Go 测试用例中的 DB Mocking 正在干扰其他测试用例

我有两个 Go 测试用例,如下所示,它们测试一个名为MyEndpoint.

MyEndpoint当它选择的数据库行具有 Field1 == "A" 时应该成功,否则返回错误。

我正在使用来自 Data-dog 的 go-sqlmock 包来模拟数据库。

当我单独运行这两个测试用例时,它们都通过了。

但是当我将它们一起运行时,TestMyTestB会失败,因为它认为 Field1 == "Z"。这么明显TestMyTestA是在干扰TestMyTestB。为什么?

看来,TestMyTestA以防万一进行的模拟在到达时仍然有效,TestMyTestB而我在TestMyTestB以防万一的模拟被完全忽略了。

如何相互独立地模拟这两个测试用例?

0 投票
0 回答
50 浏览

go - 去 sqlmock 测试插入的列的 susbet

我正在持久层中测试以下查询

我写了下面的代码

这不能正确测试代码,理想情况下我想做这样的事情

我如何定义这个row_with_one_column_desc?即返回匹配的余额customer_id

0 投票
1 回答
106 浏览

unit-testing - 在 Go 中使用映射模拟选择返回预期的事务开始错误

我正在尝试使用 go-sqlmock 进行简单的单元测试来进行选择并返回映射的 ID。下面的代码片段

我要测试的实现片段是:

但是会出现以下错误:

在此处输入图像描述

我尝试了一些示例,但没有成功。我感谢大家的帮助

更新


我尝试删除s.sqlmock.ExpectBegin() and s.sqlmock.ExpectCommit()代码并更改查询,如下所示:

但是会出现以下错误:

查询:无法匹配实际的 sql:“从 id = ? 和归档 = 1 的项目中选择 id”与预期的正则表达式“从 id = ? 和归档 = 1 的项目中选择 id”