unit-testing - 为什么在单元测试中,域类的逻辑之前和之后会收到 “No such property”?

标签 unit-testing grails mocking grails-domain-class

我注意到在grails单元测试中需要域类时,缺少对属性的任何引用。

单元测试中的某处

mockDomain(Event)

10.times {
    e   = new Event(eventCalendar:ec, title:"$ec - Event $it", details:"some detail", location:"some location", startDate: now, endDate: now+1)
    e.save()
}

Event.groovy
static beforeInsert = {
    if (!endDate) {
        // do something about it
    }
}

产生的错误
No such property: endDate for class: myproj.Event Possible solutions: endDate

groovy.lang.MissingPropertyException: No such property: endDate for class: myproj.Event
Possible solutions: endDate
    at myproj.Event$__clinit__closure5.doCall(Event.groovy:74)
    at myproj.Event$__clinit__closure5.doCall(Event.groovy)
    at grails.test.MockUtils.triggerEvent(MockUtils.groovy:724)
    at grails.test.MockUtils$_addDynamicInstanceMethods_closure68.doCall(MockUtils.groovy:752)
    at grails.test.MockUtils$_addDynamicInstanceMethods_closure68.doCall(MockUtils.groovy)
    at myproj.EventCalendarTest$_testCreateAndDeleteCalendarWithEvents_closure1.doCall(EventCalendarTest.groovy:43)
    at myproj.EventCalendarTest.testCreateAndDeleteCalendarWithEvents(EventCalendarTest.groovy:40)
  • 如何仍然创建工作测试?
  • 为什么堆栈跟踪提示所声明的属性为
    失踪?
  • 最佳答案

    您错误地将事件处理程序定义为静态闭包:

    static beforeInsert = {
        if (!endDate) {
            // do something about it
        }
    }
    

    您无法在此处访问endDate,因为它(可能是非静态属性)。更改您的事件处理程序为非静态的,并且您的问题应该得到解决。
    def beforeInsert = {
        if (!endDate) {
            // do something about it
        }
    }
    

    关于unit-testing - 为什么在单元测试中,域类的逻辑之前和之后会收到 “No such property”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5883473/

    相关文章:

    java - JMockit MockUp 可以模拟 toString() 吗?

    scala - 测试以确保两个函数同时运行?

    python - PyUnit - 如何对某个输入进入无限循环的方法进行单元测试?

    spring - Spock 如何在方法中模拟 Autowired 类的函数调用

    ios - 如何对静态属性进行单元测试?

    grails - 使用HTTPBuilder池化连接

    grails - TagLib输出错误的编码

    grails - 在插件中获取SpringSecurityService

    python - 模拟boto3 S3客户端方法Python

    groovy - 如何使用属性在mockservice SOAPUI中创建资源路径