0

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

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

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

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

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

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

4

1 回答 1

0

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

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

在以下代码上:

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

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

您还可以使用其他日期格式,例如:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date convertedCurrentDate = sdf.parse(currentDateText);

ISO 8601 日期时间格式

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

使用 FindAllBy 会出现同样的问题。

于 2016-10-06T07:07:05.340 回答