我有一个像这样的micronaut API:
@Get("/")
List<Club> listClubs()
@Get("/{id}")
Club show(Long id)
在单元测试中,当我调用show
方法时,实际上实际上是在调用listClubs()
方法。
为什么会这样?
详细信息:
考虑到我的URL映射一定是错误的,我开始调试Netty以尝试了解框架如何构造URL。
在HttpClientIntroductionAdvice
中,上下文显示如下的API方法:
Club show(Long param0)
拦截器正在参数映射中设置param0
,与我的方法的实际参数名称不匹配。扩展URI模板时,这会导致ID丢失(因此URI变为/
而不是/1
)。
我正在尝试遵循以下示例:
https://github.com/alvarosanchez/micronaut-workshop/tree/master/ex02/solution/clubs
我的项目中有一个重要的不同之处,就是端点设置为"/club"
,而不是"/"
:
@Controller("/club")
@Client("/club")
我正在使用差异工具将项目与示例进行比较,但是我在努力寻找其他差异(除了更改包名)。
为什么会这样?我应该找什么?
谢谢
更新:
使用浏览器测试目标端点-看起来不错。
完全清洁不能解决问题。
我从使用IntelliJ调试Application类切换为使用“ gradlew run”,在此过程中,我对build.gradle进行了更改(从gradle CLI中添加了JVM属性传递)。我还玩过在IDE中启用/禁用注释处理器。 (注意:在上一个项目中,导入到IDE后就启用了注释处理。在这个项目上,直到出现问题时才启用注释处理。)
我认为build.gradle更改导致问题消失了。由于该问题的显示不可靠,因此很难确定这是否是导致此问题得以解决的更改。