你能帮我模拟 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
最佳答案
由于您要链接大量方法调用,因此可以使用 Mockito.RETURNS_DEEP_STUBS
指示 Mockito 返回所有必需的中间 stub /模拟。
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);
但是由于这被认为是 anti pattern ,您可能需要重构代码以避免这种情况。
关于java - 如何模拟 StorageOptions.newBuilder(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71021315/