을 테스트 할 때 :.문제는 컨트롤러
수입 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])
합니다. 내가 뭘 놓치고있어?
작업을해야되어 다음? ControllerSpec은 유닛 테스트 용이며 2.0.x에서는 필요하지 않습니다. Integration에서 IntegrationSpec을 확장합니다 – sbglasius
단위 스펙입니다. – robert