【发布时间】:2017-10-11 12:21:50
【问题描述】:
我是 JUnit mockito 的新手,我为我的 Spring 休息资源编写了这个测试函数。
@Test
public void getAllMessageHappyTest() throws Exception {
List<Message> messageList = new ArrayList<>();
messageList.add(new Message(1,"Hello"));
messageList.add(new Message(5,"Hello world"));
messageList.add(new Message(3,"Hello World, G!"));
when(messageService.getAllMessages()).thenReturn(messageList);
RequestBuilder requestBuilder = MockMvcRequestBuilders.get("/messages/").accept(MediaType.APPLICATION_JSON);
MvcResult mvcResult = mockMvc.perform(requestBuilder).andReturn();
String expected = ""; // expected
JSONAssert.assertEquals(expected,mvcResult.toString(),false);
}
在上述场景中,when(messageService.getAllMessages()).thenReturn(messageList); 返回由我(或团队成员)编写的messageList,我将返回的 JSON 与 @ 进行比较987654325@ 也将由我(或同一团队成员)编写。所以这两件事都是由同一个人写的,所以进行这种测试有什么意义。
【问题讨论】:
-
测试中硬编码的行为是针对某些服务的,这会测试控制器层。
标签: java spring unit-testing junit mockito