【发布时间】:2013-10-16 23:20:13
【问题描述】:
我想使用 Mockito 模拟来自其他库的类。我读到 Mockito 依赖于 equals 方法的特定(我认为是 CGLIB 提供)实现。不幸的是,这个外部类有用 final 修饰符表示的 equals(),并且它的主体中存在抛出异常。
当我尝试模拟这个类时,我总是从这个方法中得到异常。 CGLIB 显然不能通过 final,调用真正的方法。
有什么想法吗?我能做些什么来使用 Mockito 模拟这个类?也许其他图书馆会处理它?
[EDIT] 快速解释:我不想模拟equals(),我检查其他方法。问题是 mockito 内部使用 equals(),我不知道是为了什么。由于 equals() 是最终的,所以调用真正的方法时会抛出异常。我曾希望在 mockito 中有一些设置“不要使用 equals()”:-) 感谢您的回答,我明天会仔细阅读。
【问题讨论】:
-
有什么异常?
-
不,你不能直接用 Mockito 模拟这样的类。当您在应用程序中使用它时,您是否能够包装它,然后模拟包装器?
-
是的,包装器将是解决方案,但在这种情况下,我必须使用该类或子类,以便保留棘手的 equals()。反正我是手工写的 mock,幸好那个类不是 final 的,所以我扩展了它。