测试期间Spring MVC控制器JSON日期序列化

时间:2015-12-09 13:24:43

标签: json unit-testing spring-mvc mockito

我正在编写Spring MVC 4.2.x REST控制器的单元测试,并且遇到Jackson(2.6.x)序列化的日期问题。在运行应用程序时,日期(java.util.Date)默认以yyyy-MM-dd格式序列化(无需额外配置),这就是我想要的。

但是,在测试期间,由于未知原因,日期会被序列化为时间戳。

以下是测试类的一些示例代码:

public class OrderControllerTest {

    @Mock
    private OrderService service;

    @InjectMocks
    private OrderController controller;

    private MockMvc mockMvc;

    private List<Order> orders = new ArrayList<>();

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
        mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
        // Initialize dummy order list
        orders.add(...);
        orders.add(...);
        orders.add(...);
    }

    @Test
    public void list() throws Exception {
        // Stub the service find method
        when(service.find(asOfDate, null)).thenReturn(orders);

        // Run the controller and check the result
        MvcResult result =
            mockMvc
                .perform(get("/admin/order/"))
                .andExpect(status().isOk())
                .andExpect(content().contentType(TestUtil.APPLICATION_JSON_UTF8))
                .andExpect(jsonPath("$[0].startDate", is(SOME_DATE)))
                .andReturn();

        System.out.println(result.getResponse().getContentAsString());
    }

所以在这里我看到返回的日期都是时间戳。

Surefire输出:

Expected: is <Thu Jan 01 00:00:00 CET 2015>
     but: was <1420066800000L>

我错过了什么吗?为什么默认的序列化格式与运行应用程序和运行测试不同?

0 个答案:

没有答案