我有一个RepresentationalModel<T>
从 Spring Hateoas 延伸出来的 DTO。我还有一个类,它实现了 Spring Hateoas 的一个名为 SimpleRepresentationalModel 的接口,它所做的只是轻松地将链接添加到您的 DTO。现在,我还创建了自己的实用程序类来添加来自 EmailDTO 的嵌套 UserDTO 的链接。所以 EmailDTO 看起来像这样:
{
"id": "1",
"email": "email@email.com",
"user": {
**fields**,
"_links": {
"inUserById": "link",
"inUserByUsername": "link"
}
},
"_links": {
"href": "link"
}
}
json 中的user
实际上是一个 UserDTO。现在,当我获取用户拥有的所有电子邮件时(考虑到用户有 2 封或更多电子邮件),它应该如下所示:
{
"embedded": {
emailDTOList: [
{
"id": "1",
"email": "email@email.com",
"user": {
**fields**,
"_links": {
"inUserById": "link",
"inUserByUsername": "link"
}
},
"_links": {
"href": "link"
}
},
{
"id": "2",
"email": "email2@email.com",
"user": {
**fields**,
"_links": {
"inUserById": "link",
"inUserByUsername": "link"
}
},
"_links": {
"href": "link"
}
}
],
"_links": {
"href": "link"
}
}
}
但是当我使用 测试时MockMvc
,它看起来像这样:
{
"embedded": {
emailDTOList: [
{
"id": "1",
"email": "email@email.com",
"user": {
**fields**,
"_links": {
"inUserById": [{
"href": "link",
"href": "link"
}]
"inUserByUsername": [{
"href": "link",
"href": "link"
}]
}
},
"_links": {
"href": "link"
}
},
{
"id": "2",
"email": "email2@email.com",
"user": {
**fields**,
"_links": {
"inUserById": [{
"href": "link",
"href": "link"
}]
"inUserByUsername": [{
"href": "link",
"href": "link"
}]
},
"_links": {
"href": "link"
}
}
],
"_links": {
"href": "link"
}
}
}
大多数链接都被简化了,但重点是,Mockito 似乎复制了链接。我使用邮递员测试了端点,即使再收到 5 封电子邮件,它也能完美运行。