繁体   English   中英

Grails 2.5.5控制器单元测试无法转换对象错误

[英]Grails 2.5.5 controller unit test cannot cast object error

我一直在尝试为控制器设置单元测试。 但是,任何访问controller属性的尝试都会导致以下错误:

org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'class au.org.ala.collectory.ContactController' with class 'java.lang.Class' to class 'au.org.ala.collectory.ContactController'

这是我一直在使用的代码:

package au.org.ala.collectory

import grails.test.mixin.Mock
import grails.test.mixin.TestFor
import spock.lang.Specification

@TestFor(ContactController)
@Mock([Contact, CollectoryAuthService])
class ContactControllerTests extends Specification {
    def contact

    def setup() {
        contact = new Contact(
            title: "Dr",
            firstName: "Lemmy",
            lastName: "Caution",
            phone: "0262465909",
            mobile: "0419468551",
            email: "lemmy.caution@csiro.au",
            notes: "to be treated with exaggerated respect",
            publish: true,
            userLastModified: 'test')
     }


    def testList() {
        when:
        contact.save(flush:true, failOnError: true)
        request.contentType = JSON_CONTENT_TYPE
        controller.list()
        then:
        model.contactInstanceList.size() == 1
        model.contactInstanceList[0].title == 'Dr'
    }
}

我尝试了代码放置和模拟的各种组合,但都无济于事。 对于为什么会出现此错误的任何解释将不胜感激。

该问题是由def name = {控制器中的闭包引起的。 这似乎会干扰正在发生的AST转换。 将闭包更改为方法,即def name() {允许测试运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM