2014-04-10 3 views
3

다음 테스트가 여기 뭐가 문제 java.NullPointerException테스트 Grails의 컨트롤러는 java.NullPointerException

package org.ttm 

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

@TestFor(ActorController) 
class ActorControllerSpec extends Specification { 
    StageDataService stageDataService = Mock() 

    void setup() { 
     controller.stageDataService = stageDataService 
    } 

    void 'index returns list of stages'() { 
     Long id = 20 

     when: 
     controller.index(id) 

     then: 
     1 * stageDataService.getActors(id) 
    } 
} 

과 실패가 발생?

이 스택 트레이스입니다 : http://jira.grails.org/browse/GRAILS-10538 :

'2014-04-10 22:22:31,471 [main] ERROR StackTrace - Full Stack Trace: 
'java.lang.NullPointerException 
    at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128) 
    at org.codehaus.groovy.grails.orm.support.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:57) 
    at org.ttm.ActorControllerSpec.index returns list of stages(ActorControllerSpec.groovy:18) 
'2014-04-10 22:22:31,472 [main] ERROR StackTrace - Full Stack Trace: 
'java.lang.NullPointerException 
    at org.ttm.ActorControllerSpec.index returns list of stages(ActorControllerSpec.groovy:18) 
'2014-04-10 22:22:31,473 [main] ERROR StackTrace - Full Stack Trace: 
'java.lang.NullPointerException 
    at org.ttm.ActorControllerSpec.index returns list of stages(ActorControllerSpec.groovy:18) 
'2014-04-10 22:22:31,473 [main] ERROR StackTrace - Full Stack Trace: 
'java.lang.NullPointerException 
    at org.ttm.ActorControllerSpec.index returns list of stages(ActorControllerSpec.groovy:18) 
'2014-04-10 22:22:31,474 [main] ERROR StackTrace - Full Stack Trace: 
'java.lang.NullPointerException 
    at org.ttm.ActorControllerSpec.index returns list of stages(ActorControllerSpec.groovy:18) 
'2014-04-10 22:22:31,474 [main] ERROR StackTrace - Full Stack Trace: 
'java.lang.NullPointerException 
    at org.ttm.ActorControllerSpec.index returns list of stages(ActorControllerSpec.groovy:18) 
'2014-04-10 22:22:45,664 [main] ERROR StackTrace - Full Stack Trace: 

좋아, 나는 그것이 문제가 될 수 있다고 생각합니다. 내 컨트롤러는 grails.transaction.Transactional 태그로 장식되어 있습니다. 해결 방법은 @Mock 태그로 클래스를 조롱하는 것입니다. Holly Molly Bugs.

답변

0

스택 트레이스가 없으면 아무 것도 없지만 1 * StageDataService.getActors(id)은 분명히 1 * stageDataService.getActors(id)이어야합니다.

+0

당신은 저를 때렸습니다. :) – dmahapatro

+0

예,'stageDataService.getActors (id)'입니다. 나는 StackTrace를 넣기 위해 질문을 편집했다. –