【问题标题】:Jooq mock fetchIntoJooq 模拟 fetchInto
【发布时间】:2021-09-01 10:36:20
【问题描述】:

我发现可以mock jooq request 的结果。但是例如可以模拟 fetchInto 函数吗?

我有这个代码

val addressSaved = dsl.selectFrom(address)
        .where(address.CITY.eq(city))
        .fetchOneInto(Address::class.java)

我只想模拟 fetchOneInto。我认为这将使测试更容易。

【问题讨论】:

  • 你为什么要这样做?无论如何,最简单的方法是使用包含此选择和模拟存储库方法的方法创建存储库

标签: kotlin mocking jooq


【解决方案1】:

如何模拟 xyzInto(Class<E>) 方法

您可以使用单个 SPI 替换所有 xyzInto(Class<E>) 样式方法的实现:RecordMapperProvider 如下所述: https://www.jooq.org/doc/latest/manual/sql-execution/fetching/pojos-with-recordmapper-provider/

这样,无论您的具体查询如何,您始终可以填充您的 Address 类(甚至是其他一些子类)的自定义实现。不过,您仍然需要模拟语句本身。正如您已经发现的那样,可能再次使用MockConnection

模拟与集成测试

您可能已经就模拟与集成测试做出了明智的决定,但对于这个问题的未来访问者,我仍然提到这一点:

一般来说,将代码与实际数据库集成测试(例如使用testcontainers)会更容易和更有用,如果您必须模拟事物以测试更高级别的逻辑,那么模拟您的服务,而不是jOOQ SQL 语句。

【讨论】:

    猜你喜欢
    • 2021-03-03
    • 2021-07-27
    • 2019-04-13
    • 2021-08-27
    • 2015-02-12
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多