2017-02-15 3 views
2

Grails Spring Security Core 플러그인에서 제공하는 isLoggedIn() 함수를 사용하는 작업이있는 컨트롤러가 있습니다. 이러한 작업을 단위 테스트 할 수 있기를 원하기 때문에 항상 isLoggedIn() 함수를 모방하여 항상 false를 반환하는 방법이 필요합니다. 이 방법은 특성에 의해 제공됩니다.이 특성은 내 문제의 원인입니다.Grails 단위 테스트에서 특성이 제공하는 재정의 메서드

나는 이미 메타 클래스에 새로운 기능을 추가하는 시도 :

UserController.metaClass.isLoggedIn = { -> false} 

이것은 그러나, 작동하지 않는 것; 원래의 메소드는 여전히 호출 중입니다.

어떻게 수행 할 수 있습니까?

답변

3

당신은 같은 게터 정의 할 필요가있다 : 예를 들어

UserController.metaClass.getIsLoggedIn = { -> false } 

를, 다음 코드를

class UserController { 
    def isLoggedIn = "original" 
} 


UserController.metaClass.getIsLoggedIn = { -> "get" } 
UserController.metaClass.isLoggedIn = { -> "direct" } 


def u = new UserController() 
println u.isLoggedIn 

인쇄 :

get 
+0

이 솔루션은'loggedIn' 사용 후 일 isLoggedIn() 대신에, getLoggedIn()을 오버라이드 (override)합니다. – Lagostra