记录真实的 JDBC 连接并生成 Jooq 模拟文件

Posted

技术标签:

【中文标题】记录真实的 JDBC 连接并生成 Jooq 模拟文件【英文标题】:Recording real JDBC connection and producing Jooq mocking file 【发布时间】:2021-05-24 11:54:25 【问题描述】:

https://www.jooq.org/javadoc/3.1.x/org/jooq/tools/jdbc/MockFileDatabase.html

我需要手动编写这个模拟文件吗?

我需要模拟一系列查询和结果,并且预计会更新,所以我不想经常修复它。

我正在处理录音连接,因为我找不到任何连接,这并不复杂,但 Jooq 库不提供它对我来说没有意义。

【问题讨论】:

【参考方案1】:

我需要手动编写这个模拟文件吗?

没有“最好”的方式来编写这个文件。它就是它,它就是它所做的。

我需要模拟一系列查询和结果,并且预计会更新,所以我不想经常修复它。

正如在这些模拟功能的整个文档中所提到的,如果您真的想要实现这样的模拟数据库(即整个数据库产品),或者如果您没有更好地实现,则应该非常小心继续集成测试您的实际数据库,例如使用testcontainers。从我阅读您的问题的方式来看,您正处于应该转换的地步。

我正在处理录音连接,因为我找不到任何连接,这并不复杂,但 Jooq 库不提供它对我来说没有意义。

录制连接听起来确实很有趣,但它取决于很多事情,包括您的客户端应用程序中导致此确切查询序列的操作的确切顺序。此外,在记录时,可能会连续两次执行相同的查询文本,从而产生不同的结果集。毕竟,记录会针对真实数据库产品进行。而这个MockFileDatabase 与真实数据库产品的模拟相去甚远。

它是用于简单模拟的简单工具。您正在寻找的是实际的集成测试。

回答您的问题:

如果您需要使用这个模拟 API,那么您需要手动编写文件。

【讨论】:

以上是关于记录真实的 JDBC 连接并生成 Jooq 模拟文件的主要内容,如果未能解决你的问题,请参考以下文章

连接多个表并选择共同字段时返回自定义 JOOQ 记录

在 try-with-resources 块之外流式传输 JOOQ 结果时,我是不是会冒 JDBC 连接泄漏的风险?

使用 Gradle Kotlin DSL 配置 Jooq 时如何修复“未解析的引用:jdbc”

jooq 的限制和偏移问题

带有 MockResult 的 Jooq 自定义类型抛出 DataTypeException

如何在jooq查询的左连接中检查记录是不是完​​全为空