【发布时间】:2016-07-16 08:28:22
【问题描述】:
我有以下控制器:
@Controller
public class HomeController {
@Resource(name="returnGraph")
Graph returnGraph;
@RequestMapping("/")
public String goToHomePage(HttpSession session){
session.setAttribute("sm", returnGraph.getVertexes());
return "home";
}
}
我尝试了以下 j 单元测试,但没有成功:
public class HomeControllerTest {
@Mock
Graph returnGraph;
@Mock
Map<String,Vertex> vertexes;
@Mock
HttpSession session;
HomeController homeController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
homeController = new HomeController();
}
@Test
public void testgoToHomePage(){
when(returnGraph.getVertexes()).thenReturn(vertexes);
assertEquals("home", homeController.goToHomePage(session));
}
}
它说我有空指针异常。
session.setAttribute("sm", returnGraph.getVertexes());
但是我不知道为什么?我不确定我还能做些什么,我该如何处理 session.setAttribute。
【问题讨论】:
-
两个快速点。如果
HomeController是您尝试注入模拟的点,则应使用@InjectMocks进行注释。其次,尝试使用doReturn(vertexes).when(returnGraph).getVertexes();,而不是您使用的类似电话。 -
它说:方法 doReturn(Map
) 未定义 HomeControllerTest 类型 -
你
static import的方法(就像你有when一样)。import static org.mockito.Mockito.doReturn; -
而您几乎肯定想将该对象添加到模型中,而不是会话中。