![](/img/trans.png)
[英]Grails - “Cannot get property 'grails' on null object” from unit test
[英]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.