【问题标题】:Unit testing mocking for Criteria标准的单元测试模拟
【发布时间】:2012-03-14 20:24:01
【问题描述】:

我是 grails 的新手,正在尝试为 Service 类编写单元测试,它有方法,它调用域对象的标准。

如何在服务类的以下方法中模拟域行为?

{def checkForDuplicates(firstName, lastName, gender, birthDate, accountId){
 def duplicateIndividual = Individual.withCriteria{
           eq('firstName',firstName)
           eq('lastName',lastName)
           eq('gender',gender)
           eq('birthDate',birthDate)
           and{
               accounts{
                   eq('id', accountId)
               }
           }
    }

    if(duplicateIndividual){
        log.error("Found duplicate for ${duplicateIndividual.firstName}
      ${duplicateIndividual.lastName}")
        return true
    }
    return false
}"

【问题讨论】:

    标签: grails grails-domain-class


    【解决方案1】:

    在 grails 2 中,您可以使用 Mock() 功能和 mockDomain 来设置您的条件,

    @TestFor(MyService)
    @Mock(Individual)
    

    然后您就可以正常创建域类了。

    http://grails.org/doc/latest/guide/single.html#unitTestingDomains

    在 grails 2 之前,您可以更改查询的元类,例如

    Individual.metaClass.static.withCriteria = { [ i1, i2 ] }
    

    【讨论】:

      猜你喜欢
      • 2012-07-28
      • 1970-01-01
      • 2013-02-22
      • 2011-04-11
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多