통합 테스트에서 컨트롤러의 동작을 테스트하려고합니다. 테스트하려는 작업이 서비스 메소드를 호출하는 간단한 시나리오입니다. 메타 클래스를 사용하여 해당 메서드를 재정의하려하지만 작동하지 않는 것처럼 보입니다. 즉, 메타 클래스를 사용하여 재정의 한 서비스 대신 항상 실제 메서드가 호출됩니다. 여기서 내가 뭘 잘못하고 있니?grails 통합 테스트에서 서비스 메소드를 오버라이드
class MyControllerTests extends GroovyTestCase {
MyController controller
void testMethodA() {
controller = new MyController()
// Mock the service
MyService mockService = new MyService()
mockService.getMetaClass().find = { String s ->
[]
}
controller = new MyController()
controller.myService = myService
controller.methodA()
}
추신 :
여기class MyController {
MyService myService
def methodA() {
def u = myService.find(params.paramA)
render view: "profile", model: [viewed: u]
}
내가 통합 테스트를 구현하는 방법은 다음과 같습니다 여기
는 컨트롤러의 방법입니다 그런 다음 컨트롤러를 테스트@Mock([Book, Author, BookService])
: 나는 당신이 당신의 서비스를 조롱하기위한 Grails의 주석을 사용하는 것이 좋습니다 2.9.2
topr, 고맙습니다. 당신이 제안한 강압 기법을 사용하여 끝내었고 모든 것이 잘 작동했습니다. – Tomato
통합 테스트에 대한 질문이 아닙니까? 코드가 단위 테스트 용인 것처럼 보입니다. –