栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Mockito:存根返回带界通配符的类型的存根方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mockito:存根返回带界通配符的类型的存根方法

您也可以为此使用非类型安全方法doReturn,

@Testpublic void testMockitoWithGenerics(){    DummyClass dummyClass = Mockito.mock(DummyClass.class);    List<? extends Number> someList = new ArrayList<Integer>();    Mockito.doReturn(someList).when(dummyClass).dummyMethod();    Assert.assertEquals(someList, dummyClass.dummyMethod());}

正如在Mockito的Google组中讨论的那样。

尽管它比

thenAnswer
起来简单,但再次请注意,它不是类型安全的。如果您担心类型安全,那么米尔豪斯的答案是正确的。

额外细节

要明确的是,这是观察到的编译器错误,

The method thenReturn(List<capture#1-of ? extends Number>) in the typeOngoingStubbing<List<capture#1-of ? extends Number>> is not applicable forthe arguments (List<capture#2-of ? extends Number>)

我相信编译器已在

when
调用期间分配了第一个通配符类型,然后无法确认调用中的第二个通配符类型
thenReturn
相同。

它看起来像

thenAnswer
没有碰到这个问题,因为它接受一个通配符类型,而
thenReturn
采取非通配符类型,它必须被捕获。从Mockito的OngoingStubbing中,

OngoingStubbing<T> thenAnswer(Answer<?> answer);OngoingStubbing<T> thenReturn(T value);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570965.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号