【发布时间】:2017-12-12 13:08:16
【问题描述】:
我想测试我的控制器类及其方法。
我的控制器方法如下所示:
@RequestMapping(value = "/updateUserStory/{usid}", method = RequestMethod.GET)
public String updateUserStory(@PathVariable("trrid") Integer trrID, @PathVariable("usid") Integer userstoryID, Model model ){
UserStory userStory = this.userStoryService.getUserStoryById(userstoryID);
model.addAttribute("userstory", userStory);
model.addAttribute("trrID", trrID);
return "updateUserStory";
}
我的测试方法如下:
public void updateUserStory() throws Exception {
Model model = mockModel();
UserStory userStory = new UserStory();
userStory.setId(1);
EasyMock.expect(userStoryService.getUserStoryById(1)).andReturn(userStory);
EasyMock.replay(userStoryService);
String test = controller.updateUserStory(1, 1, model );
EasyMock.verify(userStoryService);
Assert.assertEquals("updateUserStory", test);
}
我在上面为userStoryService 添加了@Mock
@Mock
private UserStoryServiceImpl userStoryService;
和@TestSubject 为UserStoryController(在测试中简称为控制器)。
@TestSubject
UserStoryController controller = new UserStoryController();
在运行测试时,我不断在 EasyMock.expect 行得到 A NullPointerException。我不知道这是怎么失败的。我在嘲笑正确的方法。
【问题讨论】:
-
userStoryService是如何初始化的? -
@NimrodArgov 添加了那部分
-
控制器类如何访问
userStoryService?你传进去吗?controller是在哪里创建的? -
据我了解,当您 @Mock 一个类时 EasyMock 会自动模拟来自该类的调用
-
你的控制器类是否有
UserStoryServiceImpl的设置器?
标签: java unit-testing easymock