java - 将 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?
有什么想法吗 ?
解决方案
是的,Java Clock是一个抽象类。您可以使用FixedClock在测试中实例化时钟,如下所示以传递您的控制器
Clock fixedClock = Clock.fixed(Instant.now(), ZoneId.systemDefault())
推荐阅读
- r - 我想替换向量“Dist_AU25M”中的值,但不更改数据框中的值
- http - 网站使用了错误的证书。连接是否仍然加密?
- ruby-on-rails - 在 YAML 字符串中嵌入 YAML 别名
- python - 如何将一个 ipynb 文件中定义的变量访问到 jupyter 笔记本中的另一个文件中?
- sql - 左连接条件并限制匹配条件的最大值
- javascript - Chrome:window.opener.myFunction() 在开发者工具打开时工作,但在开发者工具关闭时不起作用
- spring - 在 Tomcat 7 上启动战争时,pom.xml 中的可能差异会阻止 Spring 映射
- kotlin - 使用 SoundPool 进行游戏
- javascript - `useState`,仅在对象中的值更改时更新组件
- sql - 将嵌套 SQL 查询的输出分配给 bash 脚本中的变量