我仍在学习 JMockit,需要帮助来理解它。
我正在测试一个使用超类方法的类。我的测试在尝试使用超类方法时得到一个空指针,因为其中的代码使用 struts 动作上下文来获取会话并从会话中拉出一个对象。
我想绕过受保护方法中的struts会话内容的方法。
public class MyExtendingClass extends MySuperClass{
public void methodIamTesting(){///}
}
public abstract class MySuperClass{
//I want to mock this method
protected Object myProtectedSuperClassMethod(){
// struts action context code that returns an object//}
}
测试代码
@Test
public void testRunsAndDoesntPass() {
Mockit.setUpMock(MySuperClass.class, new MySuperClass(){
public Object myProtectedSuperClassMethod() {
return object;
}
});
// real class method invocation happens
assertEquals(expected, actual);
}
我不断得到 NullPointers,就像我没有模拟一样不知道接下来要尝试什么。我读过的所有文档和代码示例都说只需在 setUpMock 中将超类方法声明为 public,它应该可以工作。
我不能嘲笑整个班级,因为那是我正在测试的班级。