2012-04-05 2 views
1

을 테스트 할 때 :.문제는 컨트롤러

수입 grails.plugin.spock을 * 수입 grails.test.mixin을 *

@Mock (MusicItem). 클래스는 MusicItemControllerSpec가 ControllerSpec를 확장 테스트 부분은 {

def "Creating element with correct parameters"() { 
    setup: 
    controller.params.artist = "John Lennon" 
    controller.params.name = "Imagine" 
    controller.params.location = new URL ("http://localhost") 

    when: 
    controller.save() 

    then: 
    redirectArgs.action == "show" 
    controller.flash.message != null 
    MusicItem.count() == 1 
} 

}

인 경우 :

def save() { 
    def musicItemInstance = new MusicItem(params) 
    if (!musicItemInstance.save(flush: true)) { 
     render(view: "create", model: [musicItemInstance: musicItemInstance]) 
     return 
    } 

    flash.message = message(code: 'default.created.message', args: [message(code: 'musicItem.label', default: 'MusicItem'), musicItemInstance.id]) 
    redirect(action: "show", id: musicItemInstance.id) 
} 

이는 컨트롤러의 일부입니다. 이 예외가 발생합니다 :

| 6 개의 스포크 테스트 실행 중 3/6 | 실패 : 올바른 매개 변수를 사용하여 요소 만들기 (myvibe.fondation.MusicItemControllerSpec) | java.lang.IllegalStateException : No WebApplicationContext found : No ContextLoaderListener가 등록 되었습니까? at myvibe.fondation.MusicItemController.save (MusicItemControllerSearch.groovy : 39) | 올바른 매개 변수가있는 myvibe.fondation.MusicItemControllerSpec.Creating 요소의 에서 | 6 개 스팍 테스트 ... 6

4를 실행하면 나는() 저장 방법에서이 줄을 제거하면 모든 작업 벌금보다

 flash.message = message(code: 'default.created.message', args: [message(code: 'musicItem.label', default: 'MusicItem'), musicItemInstance.id]) 

합니다. 내가 뭘 놓치고있어?

+0

작업을해야되어 다음? ControllerSpec은 유닛 테스트 용이며 2.0.x에서는 필요하지 않습니다. Integration에서 IntegrationSpec을 확장합니다 – sbglasius

+0

단위 스펙입니다. – robert

답변