簡體   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