我有这样的场景
var receivingId = req.body.recevingId;
我想模拟MyInterfaceImplementedClass,我试过下面的
MyInterface myObject = new MyInterfaceImplementedClass();
myObject.get(...)
请帮我解决这个问题
答案 0 :(得分:0)
在评论中解决:
在@PrepareForTest中添加我的测试类之后,它按预期工作
简而言之,Mockito为您尝试模拟的类编写了一个生成的子类,这允许它拦截可覆盖的方法(即非最终实例方法)的行为。它处理所有接口和大多数抽象和具体类。但是,如果你试图模仿final
或static
方法的行为,包括构造函数,Mockito就无法做 1 :消费类包含对没有查找虚方法表的确切实际实现。唯一的出路是重写并替换现有类的字节码,这正是PowerMock所做的。
它通常只会覆盖您尝试模拟的类,但在某些情况下,您需要列出测试中的类或测试类本身。
因此,几乎所有运行PowerMock功能的测试都需要@PrepareForTest
,以及@RunWith
语句,以确保测试类使用PowerMock的类加载器来启用重写。