Grails:测试需要按用户类型(org.joda.time.DateTime)映射的属性的GORM标准

时间:2017-08-21 18:11:28

标签: testing grails gorm jodatime spock

我试图测试一个使用Criteria查询来计算匹配对象的方法。这使用我的Reservation域类,该类具有org.joda.time.DateTime

类型的属性
class Reservation {
  Organization organization
  DateTime dateTime
  //...

  int countPending(Organization org) {
    Reservation.createCriteria().count() {
      eq("organization", org)
      gte("dateTime", new DateTime())
      // ...
    } 
  }
}

以下是我用来测试该方法的规范:

@TestFor(Reservation)
class ReservationSpec extends Specification {
  def "countPending should return the number of pending reservations"() {
    // ...
    expect:
    Reservation.countPending(org) == 0;
  }
}

当我尝试运行测试时,我得到:

java.lang.IllegalArgumentException: Property [dateTime] is not a valid property of class [Reservation]

我怀疑这是因为DateTime既不是原始类型也不是域对象,而且模拟域对象的代码并不知道如何处理它。为了在应用程序中运行此代码,我们使用自定义用户类型映射(org.joda.time.contrib.hibernate.PersistentDateTime)。

有没有办法让域名模拟代码知道DateTime,还是以其他任何方式使这个可测试?

编辑:将@Mock([Reservation])更改为@TestFor(Reservation) - 结果相同。

0 个答案:

没有答案