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

模拟使用mockito使用通配符返回泛型的方法

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

模拟使用mockito使用通配符返回泛型的方法

编辑 :从Mockito 1.10.x开始,嵌入在类中的泛型类型现在由Mockito用于深层存根。即。

public interface A<T extends Observer & Comparable<? super T>>  {  List<? extends B> bList();  T observer();}B b = deep_stubbed.bList().iterator().next(); // returns a mock of B ; mockito remebers that A returns a List of BObserver o = deep_stubbed.observer(); // mockito can find that T super type is ObserverComparable<? super T> c = deep_stubbed.observer(); // or that T implements Comparable

Mockito尽最大努力获取编译器嵌入的类型信息,但是当应用擦除时,mockito除了返回的模拟外,什么也不能做

Object


原文 :恩,泛型比Mockito的问题更多。对于泛型,您应该阅读 Angelika Langer
在其上写的内容。对于当前主题(即通配符),请阅读本节。

但简而言之,您可以使用Mockito的另一种语法来帮助您解决当前情况:

doReturn(interfaces).when(classAMock).getMyInterfaces();

或使用BDD别名:

willReturn(interfaces).given(classAMock).getMyInterfaces();

不过,您可以编写更加通用的包装器。这将有助于将来的开发人员使用相同的第三方API。


附带说明:您不应该模拟自己不拥有的类型,它会导致许多错误和问题。相反,您应该有一些包装。例如,DAO和存储库就代表了这样的想法,它将模拟DAO或存储库接口,而不是JDBC
/ JPA / hibernate。有许多关于此的博客文章:

  • http://davesquared.net/2011/04/dont-mock-types-you-dont-own.html
  • http://blog.8thlight.com/eric-smith/2011/10/27/thats-not-yours.html
  • https://web.archive.org/web/20140923101818/http://freshbrewedpre.com/derekgreer/2012/04/01/tdd-best-practices-dont-mock-others/


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

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

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