当前位置: 首页 > 知识库问答 >
问题:

如何模拟/存根jOOQ UpdatleRecordImpl store()方法?

常乐
2023-03-14

我已经设法更新了存根():

@Test
public void updateStubbed() {
    UpdatableRecordTest updatableRecordTest = spy(new UpdatableRecordTest());
    doReturn(1).when(updatableRecordTest).update();
}

但是,当我尝试存根store()时:

@Test
public void storeStubbed() {
    UpdatableRecordTest updatableRecordTest = spy(new UpdatableRecordTest());
    doReturn(1).when(updatableRecordTest).store();
}

我收到错误:

org.mockito.exceptions.misusing。ErrorTypeOfReturnValue:<br>fieldsRow()无法返回整数fieldsRow()应返回行

如果您不确定为什么会出现上述错误,请继续阅读。由于语法的性质,可能会出现上述问题,因为:

  • 这种异常可能发生在错误编写的多线程测试中。请参阅Mockito常见问题解答,了解并发测试的限制
  • 间谍被使用when(spy.foo())清除。then()语法。更安全的方法是截获间谍-
    • 使用doReturn|Throw()方法族。更多关于Mockito的javadocs。spy()方法

    如何存根store()方法?

共有1个答案

卓宏达
2023-03-14

您不能使用Mockito模拟store()方法,因为它是最终方法,并且Mockito不提供对模拟最终方法的支持。您可以做的是:

  • 对于单元测试,请使用 PowerMock(它提供了一种模拟最终方法的方法,但对Spring不友好。只是提到以防万一你与Spring一起工作),
  • 用于功能测试,创建嵌入式数据库模式,并将 JOOQ 配置为在测试环境中使用此模式。

不幸的是,我没有更好的答案。

 类似资料:
  • 我在micronaut中有以下接口来执行HTTP POST请求: 我有一个调用接口的类: 我想在我的spock测试中模拟/存根API调用,我尝试了以下方法: 然而,我得到的错误:

  • 问题内容: 我需要测试一个函数,该函数需要使用urllib.urlopen(它也使用urllib.urlencode)来查询外部服务器上的页面。服务器可能已关闭,页面可能已更改;我不能依靠它进行测试。 控制urllib.urlopen返回的最佳方法是什么? 问题答案: 另一个简单的方法是让您的测试覆盖urllib的功能。例如,如果您的模块具有 您可以这样定义测试: 然后,当您的测试调用中的函数时,

  • 问题内容: 我使用sinon作为对nodejs(Hapijs)功能的单元测试。该函数在index.js中。我在我的测试文件中包含index.js作为 但是再次在index.js里面有要求 再次,library.js需要第三方功能 现在,当我在下面运行我的测试文件testfunc.js时 我收到以下错误 我想知道是否有任何方法可以对index.js的内部require库.stub进行存根(因为ind

  • 如何模拟返回已强制转换的模拟对象的方法。 试验方法。

  • 问题内容: 那是测试的方法 我必须模拟三个CacheContext,Method和CacheEnable。有什么想法可以使测试用例更加简单吗? 问题答案: Mockito 可以处理链接的存根: AFAIK,链中的第一个方法返回一个模拟,该模拟被设置为在第二个链式方法调用中返回您的值。 Mockito的作者注意到,这 仅应用于遗留代码 。否则,更好的方法是将行为推送到CacheContext并提供完

  • 下面是抽象类的代码: 现在,我应该如何为编写单元测试,并且应该如何在中模拟会话? 我在Stackoverflow上尝试了不同的解决方案,但仍然无法模拟它并获得会话模拟。