首页 > 解决方案 > 将 java 时钟传递给控制器​​(映射类)

问题描述

我需要将 java Clock 传递给控制器​​,但由于 Clock 是一个抽象类,它会抛出一个错误。它是一个网络应用程序。我基本上不需要时钟对象作为控制器参数,但是由于我在单元测试中初始化了控制器,所以该参数是必需的。有什么想法吗 ?基本上我正在尝试这样做

@RequestMapping(value = "/abc", method = RequestMethod.GET)
public ModelAndView getRequests(@PathVariable("name") String name, @PathVariable("age") int age, HttpServletResponse response, HttpServletRequest request, Clock clock) {
    someMethod(clock) //-- for unit testing only
}

获取 servlet 异常。

Failed to instantiate [java.time.Clock]: Is it an abstract class?

有什么想法吗 ?

标签: javaexceptionservletsabstract

解决方案


是的,Java Clock是一个抽象类。您可以使用FixedClock在测试中实例化时钟,如下所示以传递您的控制器

Clock fixedClock = Clock.fixed(Instant.now(), ZoneId.systemDefault())

推荐阅读