MockMvc WebMvcTests Spring Hateoas 返回多个嵌套链接

问题描述

我有一个从 Spring Hateoas 扩展 RepresentationalModel<T> 的 DTO。我还有一个类,它实现了 Spring Hateoas 的一个名为 SimpleRepresentationalModel 的接口,它所做的只是轻松地将链接添加到您的 DTO。现在,我还制作了自己的实用程序类,以添加来自 EmailDTO 的嵌套 UserDTO 的链接。所以 EmailDTO 看起来像这样:

{
    "id": "1","email": "[email protected]","user": {
          **fields**,"_links": {
               "inUserById": "link","inUserByUsername": "link"
            }
     },"_links": {
          "href": "link"
     }
}

json 中的 user 实际上是一个 UserDTO。现在,当我获取用户拥有的所有电子邮件时(考虑到用户有 2 封或更多电子邮件),它应该如下所示:

{
 "embedded": {
          emailDTOList: [
                      {
                     "id": "1","user": {
                          **fields**,"_links": {
                              "inUserById": "link","inUserByUsername": "link"
                        }
                     },"_links": {
                           "href": "link"
                        }
                      },{
                     "id": "2","email": "[email protected]","_links": {
                           "href": "link"
                        }
                      }
                  ],"_links": {
                    "href": "link"
                   }
    }
}

但是当我使用 MockMvc 进行测试时,它看起来像这样:

{
 "embedded": {
          emailDTOList: [
                      {
                     "id": "1","_links": {
                              "inUserById": [{
                                         "href": "link","href": "link"
                                       }]
                              "inUserByUsername": [{
                                         "href": "link","href": "link"
                                       }]
                        }
                     },"href": "link"
                                       }]
                     },"_links": {
                    "href": "link"
                   }
    }
}

大部分链接都被简化了,但关键是,Mockito 似乎复制了链接。我使用邮递员测试了端点,即使再发送 5 封电子邮件,它也能完美运行。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)