我需要将java Clock传递给控制器,但由于Clock是抽象类,因此会引发error。这是一个Web应用程序。我基本上不需要时钟对象作为控制器参数,但是由于我在单元测试中初始化了控制器,因此该参数是必需的。有什么想法吗 ?基本上我正在尝试这样做
@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?
有什么想法吗?
是,Java Clock是一个抽象类。您可以使用FixedClock实例化您的测试中的Clock,如下所示通过您的控制器
Clock fixedClock = Clock.fixed(Instant.now(), ZoneId.systemDefault())