首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring MockMvc -从REST获取java.time.Instant

Spring MockMvc -从REST获取java.time.Instant
EN

Stack Overflow用户
提问于 2018-06-08 11:48:17
回答 1查看 839关注 0票数 4

我有一个资源,它返回一个带有java.time.Instant属性的对象。

代码语言:javascript
复制
class X {
    ...
    private Instant startDate;
    ...
}

我正在用以下方法测试:

代码语言:javascript
复制
    mockMvc.perform(get("/api/x"))
        .andExpect(status().isOk())
        .andExpect(jsonPath("$.content.[*].startDate").value(hasItem(MY_INSTANT_DATE)));

但我从JUnit得到的是:

代码语言:javascript
复制
Expected: a collection containing <2018-06-08T11:46:50.292Z> but: was <1528458378.397000000>

如何将我的Instant日期映射成这种格式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-18 13:13:47

我通过定制Matcher找到了一个解决方案:

代码语言:javascript
复制
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);
    }
}

它的工厂:

代码语言:javascript
复制
public class CustomMatchersFactory {
    public static Matcher dateEquals(Date date) {
        return is(new DateEquals(date));
    }
}

和用法:

代码语言:javascript
复制
.andExpect(jsonPath("$.content.[*].startDate", dateEquals(MY_INSTANT_DATE)));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50759998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档