[英]Spring MockMvc - getting java.time.Instant from REST
I have a resource that returns me an object with java.time.Instant
property. 我有一个资源,它返回一个java.time.Instant
属性的对象。
class X {
...
private Instant startDate;
...
}
And I am testing it with: 我正在测试它:
mockMvc.perform(get("/api/x"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.content.[*].startDate").value(hasItem(MY_INSTANT_DATE)));
But what I get from JUnit is: 但是我从JUnit得到的是:
Expected: a collection containing <2018-06-08T11:46:50.292Z> but: was <1528458378.397000000>
How can I map my Instant
date to this format? 如何将我的Instant
日期映射到此格式?
I've found a solution by making a custom Matcher: 我通过制作自定义匹配器找到了解决方案:
class DateEquals extends BaseMatcher<Integer> {
private final Date expectedValue;
DateEquals(Date equalArg) {
expectedValue = equalArg;
}
@Override
public boolean matches(Object item) {
Long dateTimeMillis = (Long) item;
return dateTimeMillis.equals(toEpochMillis(expectedValue));
}
@Override
public void describeTo(Description description) {
description.appendValue(" equals to date: " + expectedValue);
}
}
Factory for it: 工厂为它:
public class CustomMatchersFactory {
public static Matcher dateEquals(Date date) {
return is(new DateEquals(date));
}
}
And usage: 用法:
.andExpect(jsonPath("$.content.[*].startDate", dateEquals(MY_INSTANT_DATE)));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.