【问题标题】:JOOQ mock result with mocked fields带有模拟字段的 JOOQ 模拟结果
【发布时间】:2018-01-16 13:39:46
【问题描述】:

我正在为一个使用 JOOQ 库查询 SQL 的项目编写 UT,我需要模拟 SQL 响应。

我已经尝试关注this manual,但是,我们将 JOOQ 与纯 SQL 结合使用,这意味着我们没有任何预定义的字段或表类。

我的问题是 - 如何在不提供字段作为参数的情况下定义 Result 对象?还是定义一个模拟字段参数?

        Result<Record2<Integer, String>> result = create.newResult(AUTHOR.ID, AUTHOR.LAST_NAME);    // replace the AUTHOR.ID and AUTHOR.LAST_NAME with some string for example
        result.add(create.newRecord(AUTHOR.ID, AUTHOR.LAST_NAME));
        result.get(0).setValue(AUTHOR.ID, 1);
        result.get(0).setValue(AUTHOR.LAST_NAME, "Orwell");
        mock[0] = new MockResult(1, result);

我注意到我可以定义一个新的字段,但是 Field 实现的接口相当广泛,所以我正在寻找更简单的东西。

谢谢!

【问题讨论】:

    标签: java sql jooq


    【解决方案1】:

    当您在没有代码生成器的情况下使用 jOOQ 时,您需要使用普通 SQL API 动态构造 TableField 引用。引用你的例子:

    // Dynamic field creation
    Field<Integer> id = field(name("AUTHOR", "ID"), SQLDataType.INTEGER);
    Field<String> lastName = field(name("AUTHOR", "LAST_NAME"), SQLDataType.VARCHAR);
    
    // Same as before
    Result<Record2<Integer, String>> result = create.newResult(id, lastName);
    result.add(create.newRecord(id, lastName).values(1, "Orwell"));
    mock[0] = new MockResult(1, result);
    

    详情请参阅手册的以下部分:

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2018-10-20
      • 1970-01-01
      • 2012-06-28
      • 2015-02-12
      • 1970-01-01
      • 2019-10-22
      • 2023-01-10
      • 2020-09-19
      相关资源
      最近更新 更多