我试图模拟TemplateRendererUtil
类的静态方法TemplateRendererUtil
,以便在测试时返回null
。不确定这是否是正确的方法,我试图测试的方法调用这个类,但我只想让它跳过这个类。
在这里获得一个编译错误:
try (MockedStatic<TemplateRendererUtil> mockedStatic = Mockito.mockStatic(TemplateRendererUtil.class)){
// java: incompatible types: incompatible parameter types in method reference
mockedStatic.when(TemplateRendererUtil::render).thenReturn(null);
}
被引用的类:
public class TemplateRendererUtil {
private static final ResponseTemplateRenderer RENDERER = ResponseTemplateRenderer.getInstance();
private TemplateRendererUtil() {
}
public static void render(HttpServletRequest req, HttpServletResponse resp, String templateFile, Map<String, Object> params) throws TemplateRendererUtilException {
try {
RENDERER.render(req, resp, templateFile, params);
} catch (ResponseTemplateRendererException var5) {
throw new TemplateRendererUtilException(var5);
}
}
}
at Mockito.mockStatic
堆栈跟踪
java.lang.InternalError: class redefinition failed: invalid class
at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses0(Native Method)
at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:167)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:280)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.mockClassStatic(InlineBytecodeGenerator.java:225)
at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.mockClassStatic(TypeCachingBytecodeGenerator.java:63)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.createStaticMock(InlineDelegateByteBuddyMockMaker.java:560)
at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.createStaticMock(InlineByteBuddyMockMaker.java:83)
at org.mockito.internal.util.MockUtil.createStaticMock(MockUtil.java:147)
at org.mockito.internal.MockitoCore.mockStatic(MockitoCore.java:142)
at org.mockito.Mockito.mockStatic(Mockito.java:2181)
at org.mockito.Mockito.mockStatic(Mockito.java:2118)
...
发布于 2022-08-10 07:59:29
如我所见,render方法不会返回任何内容,因此可以这样做。
try (MockedStatic<TemplateRendererUtil> mockedStatic = Mockito.mockStatic(TemplateRendererUtil.class)){
doNothing().when(TemplateRendererUtil.render(Mockito.any(), Mockito.any(), Mockito.anyString(), Mockito.anyMap()));
}
https://stackoverflow.com/questions/73302606
复制相似问题