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

如何模拟存储选项。新造船商()

淳于枫
2023-03-14

你能帮我嘲笑StorageOptions.newBuilder吗?

被嘲笑的代码:

StorageOptions.newBuilder.setProjectId("Test").build().getService()

我写的代码:

Storage mockStorage = Mockito.mock(Storage.class);

MockedStatic<StorageOptions> storageOptionsMock = Mockito.mockStorage(StorageOptions.class);
storageOptionsMock.when( ()-> StorageOptions.newBuilder().setProjectId("Test").build().getService()).thenReturn(mockStorage);

错误:

org.mockito.exceptions.misusing.WrongTypeOfReturnValue: 
Storage$MockitoMock$1939527098 cannot be returned by newBuilder()
newBuilder() should return Builder

共有1个答案

喻渊
2023-03-14

由于您链接了许多方法调用,因此可以使用Mockito。RETURNS_DEEP_STUBS指示Mockito返回所有需要的中间存根/mock。

Storage mockStorage = Mockito.mock(Storage.class);
MockedStatic<StorageOptions> storageOptionsMock = 
    Mockito.mockStatic(StorageOptions.class, Mockito.RETURNS_DEEP_STUBS);

storageOptionsMock.when(()->  
    StorageOptions.newBuilder()
                  .setProjectId("Test")
                  .build()
                  .getService())
.thenReturn(mockStorage);

assertThat(StorageOptions.newBuilder()
    .setProjectId("Test")
    .build()
    .getService())
.isEqualTo(mockStorage);

但由于这被认为是一种反模式,您可能需要重构代码以避免这种情况。

 类似资料:
  • 我已经写了一个代码来录制音频并保存到下面的文件位置。 在Logcat中,它为我提供了一个文件位置 我无法在SD卡上找到此文件位置。如何访问该位置?

  • 我有一个问题与存根我的存储库。有人建议我只创建另一个application.properties(我没有这样做),并使用像H2这样的内存数据库。不过,我想知道我是否可以只是存根调用,这样当调用MyDataService.FindById(id)而不是试图从数据库中获取它时,就可以返回一个模拟对象?

  • 我开始开发Azure功能。我已经能够连接到我实际的azure存储帐户队列,以测试如何使用azure功能编程。现在,我的下一步是使用Microsoft Azure Storage Explorer来使用本地存储帐户,这样我就不必连接到Azure。我在这篇文章中看到了如何做到这一点:https://docs.microsoft.com/en-us/azure/storage/storage-confi

  • 问题内容: 我正在尝试第一次使用PowerMockito模拟类构造函数,但是它不起作用。我当前的代码是: 测试失败,因为返回的值为“ Fail”。我的问题在哪里? 问题答案: Okey,找到答案了,您需要致电 代替

  • 现在,当调用“/comments/1”时,我得到了404个错误,所以数据rest没有公开我的存储库。主要问题是“如何模拟存储库方法从数据库中获取数据?” 我的测试类: 据我所知,使用MockBean注释我替换了当前的存储库bean并且它不会被数据rest公开,我们有没有办法将数据预填充到db或存储库方法的模拟调用?

  • 我已经创建了一个包含控制器、服务和存储库层的基本Rest API。我现在正在尝试为通过产品ID查找产品的服务层方法编写一个单元测试。但是,当我运行测试时,它会在我试图模拟存储库findById()方法的行中抛出一个NullPointerException。 服务层中的getProductById()方法如下所示: 我的服务层测试类: