在Grails中,有一种使用Joda时间模拟当前时间的好方法吗?

在Grails中,有一种使用Joda时间模拟当前时间的好方法吗?,第1张

概述我正在编写一些代码,根据当前时间进行日期和时间计算.在Joda时间,这是通过( Java)构造函数访问的,因为它是一个不可变对象.我需要能够进行模拟,以便新的DateTime()返回一个特定的常量瞬间,这样我就可以做出合理的测试断言,但只留下所有其他DateTime方法. 这证明是令人讨厌的. Grails mockFor(DateTime,true)不会让我模拟Java构造函数,但是没有明显或可 我正在编写一些代码,根据当前时间进行日期和时间计算.在Joda时间,这是通过( Java)构造函数访问的,因为它是一个不可变对象.我需要能够进行模拟,以便新的DateTime()返回一个特定的常量瞬间,这样我就可以做出合理的测试断言,但只留下所有其他DateTime方法.

这证明是令人讨厌的. Grails mockFor(DateTime,true)不会让我模拟Java构造函数,但是没有明显或可读的非构造函数方式来获取Joda时间.

唯一可用的选项似乎涉及低级JVM技术,如JMockit或EasyMock 3类模拟,这是Grails的痛苦.有没有简单/直接的方法来实现这一目标?

解决方法 我们最终使用Now()方法创建了dateService.在单元测试中,我们用它来模拟它

domainInstance.dateService = [ Now: { currentTime } ] as DateService

其中currentTime是一个单元测试类字段.这强加了每个人对dateService的依赖(我们唯一的近全局依赖),对于src类,必须手动传递它.

单元测试,OTOH,看起来很清楚.

总结

以上是内存溢出为你收集整理的在Grails中,有一种使用Joda时间模拟当前时间的好方法吗?全部内容,希望文章能够帮你解决在Grails中,有一种使用Joda时间模拟当前时间的好方法吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1241047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存