问题标签 [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 回答
628 浏览

unit-testing - Go Unit test - 在使用 go-sqlmock 模拟 gorm 时,无法将实际 sql 与预期的正则表达式匹配?

单元测试时,我使用 sqlmock 模拟 gorm。但是在运行所有初始设置时都很好,但是当实际查询和测试查询匹配时会发生错误。我在下面给出了所有代码。

用户.go

嘲笑

user_test.go

当我执行res, _ := s.repository.GetUserByID(uint(id))这一行时,它会进入 user.go 文件。在 sql 查询行中出现错误如下所示。

这里有什么问题?

0 投票
1 回答
120 浏览

mysql - Go sqlmock 测试 MySQL 批量插入

我正在使用 GORM将多行批量插入到 MySQL 表中,并且我想使用 sqlmock 测试该行为是否正确。我没有在网上找到任何关于使用 sqlmock 模拟批量插入的信息。

对于插入单行,我们将有类似的内容:

但是应该如何传递多行的值ExpectExec以表示批量插入?

0 投票
1 回答
96 浏览

go - 使用 sqlmock 时,GORM 预加载会导致问题

GORM 预加载导致此错误“所有期望都已实现,调用查询 'SELECT * FROM "self"."xxxxxx" WHERE "xxxxxx"."l7_code" = $1' with args [{Name: Ordinal:1 Value:9920000000054 }] 当我尝试使用 sqlmock 时没有预料到。如果我不使用 gorm preload,则 sqlmock 没有问题。所以如果我们想模拟 gorm preload,我们如何在 sqlmock AddRow 函数中给出它

0 投票
0 回答
451 浏览

mysql - 如何在 golang 中创建 sql.mock 以进行插入查询

我想做一个 100% 覆盖率的单元测试,但是在单元测试中遗漏了许多命令或检查,我该如何修复它才能达到 100% 覆盖率

对于单元测试示例,我使用它。这有什么问题

0 投票
0 回答
139 浏览

unit-testing - 使用 sqlmock 执行单元测试查询时出现意外错误

我有以下函数,它采用类型切片SchoolDbEntry并将其批量插入数据库。

我正在尝试使用以下函数使用 sqlmock 对此进行测试

但是,测试失败了。我正进入(状态

预期没有错误时的错误(即,在此行之后:)_, err = s.Conn.Exec(query, args...)。当我将它作为实际代码的一部分进行测试时,该函数运行良好。问题只是单元测试。

0 投票
1 回答
490 浏览

go - 使用 go-sqlmock 创建一个 gorm 数据库(运行时错误)

概括

我正在尝试使用go-sqlmockwithgorm进行测试。我想为初始数据库迁移编写一个测试,但我遇到了一个panic: runtime error: invalid memory address or nil pointer dereference问题,我一直无法弄清楚原因。从错误堆栈来看,我认为是这个语句做到了:db.AutoMigrate(&models.User{}). 我不确定为什么,因为db据称此时已成功启动,models.User并被定义和实例化为db.AutoMigrate. 我感觉错误出在mocks.NewDatabase函数中,但我不知所措。

不确定是否有人有时间或愿意在相关代码上达到顶峰并帮助我?我在代码中指出了发生故障的位置(它们在最后两个代码块中)。让我知道是否有任何其他上下文会有所帮助。

相关代码

项目/src/models/models.go

项目/src/mocks/database.go

项目/src/数据库/init.go

现在测试:

项目/src/database/init_test.go

和日志

0 投票
0 回答
311 浏览

unit-testing - Go GORM Mocking 预期开始

我正在尝试测试一个获取一些详细信息然后在数据库中更新详细信息的函数。我正在为我的 ORM 使用 gorm,并使用 DATA-DOG/sqlmock 模拟 db exec。但是我不断收到预期的开始错误,但不确定我在哪里搞砸了。我尝试了许多代码变体,其中删除了 expectBegin expectCommit 等。

这是我要测试的代码:

这是测试代码

但测试不断返回此错误

0 投票
0 回答
66 浏览

mysql - 如何使用 sqlmock 在 Go 中模拟表计数查询(GORM HasTable)?

我正在sqlmock对一组用 Go 编写的 Mysql 数据库查询处理程序进行单元测试。这适用于标准SELECT/INSERT查询。对于我们的数据库健康检查,我使用 GORMDB.Migrator().HasTable()来确保我们的数据库中存在一个特定的表。该功能似乎工作正常,但我很难模拟在HasTable(). 有人对如何使用它有任何建议sqlmock吗?

HasTable()正在执行以下查询: SELECT count(*) FROM information_schema.tables WHERE table_schema = '' AND table_name = '[table_name]' AND table_type = 'BASE TABLE'

我的测试辅助函数如下所示:

我已经尝试了 , 的所有组合mock.ExpectExec()mock.ExpectQuery()以及我能想到的所有方法。有任何想法吗?

0 投票
1 回答
51 浏览

go-gorm - 预期查询部分中的 go-sqlmock 测试问题

我是go-sqlmock第一次使用,我正在尝试为后期操作编写测试。我正在使用gormgin

  1. 测试给了我一个错误,s.mock.ExpectQuery(regexp.QuoteMeta(....我不是这里的问题。我已经发布了测试和输出。
  2. 另外,(这与1无关)在这个测试中我真的不知道code会是什么,因为它是在api控制器中随机生成的。有没有办法在该code字段中分配一个通用编号。

测试文件

输出。

0 投票
0 回答
12 浏览

go-sqlmock - sqlmock 在意外查询时不会产生错误

在此测试中,调用此 API 时会执行一个查询。此查询用于选择用户。当我从测试中将此查询注释掉时,有趣的是,这意味着它不是预期的,mock.ExpectationsWereMet它没有给出任何错误!我是否遗漏了有关此模拟如何工作的某些内容,如果在没有预料到的情况下执行了查询,是否应该给出错误?