gpt4 book ai didi

unit-testing - grails 2.5.5单元测试中的java8日期

转载 作者:行者123 更新时间:2023-12-02 15:50:36 25 4
gpt4 key购买 nike

我正在使用带有 java 8 的 grails 2.5.5。为了使用新日期,我定义了 java 8 日期 (ZonedDateTime) 和数据库/休眠日期之间的映射。这工作正常,完全没有问题

问题从这里开始:单元测试 :
我有一个使用的方法

Foo.withCriteria{
ge("startDate",foo.startDate)
}

现在的问题是 startDate 是 ZonedDateTime 并且我得到错误 startDate 是 Foo 不存在的属性。使用 FindAllBy 会出现同样的问题。

我不能模拟这个方法,因为它是一个私有(private)方法。我如何让这些 java 8 日期在单元测试中工作?

(如果我提供的信息太少,请问,我可以提供,但我认为这已经足够了,我想尽可能地保持它对于 stackOverflow 的一般性)

最佳答案

每个日期都有不同的格式,因此您必须检查日期的类型和格式是否相同。您的 Java 8 可能使用 java.util.Date SimpleDateFormatter .

请检查您的单元测试框架日期格式,它可能是 日期时间 格式,因此它会导致差异并可能导致您出错。

在以下代码上:

Foo.withCriteria{
ge("startDate",foo.startDate)
}

确保使用单元测试框架以正确的格式正确初始化了 foo.startDate。

您还可以使用其他日期格式,例如:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date convertedCurrentDate = sdf.parse(currentDateText);

ISO 8601 DateTime Format

这些是使用数据库的非常流行的格式,这可以解释为什么

Using FindAllBy gives the same problem.

关于unit-testing - grails 2.5.5单元测试中的java8日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39871970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com