在Mockito测试中未设置ContentType

时间:2016-06-04 04:00:33

标签: spring junit mockito

我正在尝试在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构建中

任何想法?

0 个答案:

没有答案