首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试方法引用类方法时“方法引用中的不兼容参数类型”

尝试方法引用类方法时“方法引用中的不兼容参数类型”
EN

Stack Overflow用户
提问于 2022-08-10 07:49:31
回答 2查看 94关注 0票数 -1

我试图模拟TemplateRendererUtil类的静态方法TemplateRendererUtil,以便在测试时返回null。不确定这是否是正确的方法,我试图测试的方法调用这个类,但我只想让它跳过这个类。

在这里获得一个编译错误:

代码语言:javascript
运行
复制
try (MockedStatic<TemplateRendererUtil> mockedStatic = Mockito.mockStatic(TemplateRendererUtil.class)){
    // java: incompatible types: incompatible parameter types in method reference
    mockedStatic.when(TemplateRendererUtil::render).thenReturn(null);
}

被引用的类:

代码语言:javascript
运行
复制
    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堆栈跟踪

代码语言:javascript
运行
复制
    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)
    ...
EN

Stack Overflow用户

发布于 2022-08-10 07:59:29

如我所见,render方法不会返回任何内容,因此可以这样做。

代码语言:javascript
运行
复制
try (MockedStatic<TemplateRendererUtil> mockedStatic = Mockito.mockStatic(TemplateRendererUtil.class)){
                    
 doNothing().when(TemplateRendererUtil.render(Mockito.any(), Mockito.any(), Mockito.anyString(), Mockito.anyMap()));

}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73302606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档