Java 测试用例中的NPE
我正在编写控制器类的测试用例,它具有返回模型对象的getModel()方法。以下是方法的片段:Java 测试用例中的NPE,java,junit,mockito,powermock,Java,Junit,Mockito,Powermock,我正在编写控制器类的测试用例,它具有返回模型对象的getModel()方法。以下是方法的片段: @Override public ContentModel getModel() { if(getCurrentPage().getDepth() > 0) { parentTitle = getCurrentPage().getParent().getTitle(); parentPath = getCurrentPage().getParent().
@Override
public ContentModel getModel() {
if(getCurrentPage().getDepth() > 0) {
parentTitle = getCurrentPage().getParent().getTitle();
parentPath = getCurrentPage().getParent().getPath();
}
else {
parentTitle = "No Parent";
parentPath = "No Parent";
}
return ComponentModelBuilder.build(
rcm -> rcm.setHeading(heading),
rcm -> rcm.setParentTitle(parentTitle),
rcm -> rcm.setParentPath(parentPath)
);
}
以下是测试用例:
@Test
public void getModelShouldReturnValidModelWhenInjected() {
Page parentPage = mock(Page.class);
ContentModel contentModel = contentController.getModel();
assertThat(ContentModel instanceof contentModel, is(true));
assertThat(((ContentModel) contentModel).getHeading(), is("Heading For Banner"));
}
在这里,我们如何模拟currentPage对象,并在parentTitle和parentPath的测试用例中使用它
stacktrace :
java.lang.NullPointerException
at com.prj.project.aem.components.base.BaseController.getCurrentPage(BaseController.java:127)
at com.prj.project.aem.components.content.contentController.getModel(contentController.java:61)
你能分享stacktrace吗?我打赌
contentController
要么从未实例化过,要么是一个模拟对象。我打赌他期望Page parentPage=mock(Page.class)代码>模拟对象getCurrentPage()。getParent()
是,contentController是模拟对象。