我正在尝试在RESTful GET控制器上使用Mockito和Spring MVC进行单元测试。这是我的测试:
@RunWith(MockitoJUnitRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = {"/test-context.xml","/dataaccess-context.xml"})
public class FormControllerTest {
private MockMvc mockMvc;
@Autowired
FormImplBean formBean;
@Mock
private FormService formServiceMock;
@InjectMocks
private FormController formController;
@Before
public void setup() {
// Process mock annotations
MockitoAnnotations.initMocks(this);
// Setup Spring test in standalone mode
this.mockMvc = MockMvcBuilders.standaloneSetup(formController).build();
}
@Test
public void testGet() throws Exception {
when(formServiceMock.getFormImplById(1)).thenReturn(formBean);
mockMvc.perform(get("/Form/form/{id}", 1))
.andExpect(status().is2xxSuccessful())
.andExpect(content().contentType(MediaType.APPLICATION_JSON));
verify(formServiceMock, times(1)).getFormImplById(1);
verifyZeroInteractions(formServiceMock);
}
}
这是我的控制器方法:
@RequestMapping(value = "/form/{formId}", method = RequestMethod.GET)
@ResponseBody
public FormImplBean getForm(@PathVariable("formId") int formId ) {
return formService.getFormImplById(formId);
}
我一直在:
java.lang.AssertionError: Content type not set
当然,当我使用firefox开发人员工具查看服务器上的真实控制器时,我发现内容类型设置正确。
我尝试将produce =“application / json”添加到控制器但是没有用,(我认为我不应该对吗?)
没有内容类型检查,测试通过正常。 我正在使用:
春季4.2.7 - Mockito 1.10.19 - 杰克逊2.7.0 - Junit 4.12
在maven构建中
任何想法?