2012-02-23 2 views

답변

2

메서드를 metaClass하여 원하는대로 반환 할 수 있습니다.

@Test 
void pluginCode() { 
    def myService = new MyService() 
    def wasCalled = false 
    myService.metaClass.sendJMSMessage = {String message -> 
     //I like to have an assert in here to test what's being passed in so I can ensure wiring is correct 
     wasCalled = true 
     null //this is what the method will now return 
    } 

    def results = myService.myServiceMethodThatCallsPlugin() 

    assert wasCalled 
} 

은 내가하지 특히 ​​정말 당신이 유선 있다는 것을 보장하지 않기 때문에 응답이 null이라고 주장처럼 않기 때문에 나는 metaClassed 방법에서 null를 반환 있어요 wasCalled 플래그를 갖고 싶어요 바르게. wasCalled 깃발없이 할 수 있지만 뭔가 독특한 것을 반환한다면.

위의 예에서 나는 String 매개 변수를 1 개 사용했지만 실제 발생하는 것과 일치하도록 숫자/유형의 매개 변수를 metaClass 개까지 사용할 수 있습니다.

+0

안녕하세요 Jarred, 불행히도이 방법은 서비스 중이 아닙니다. 그것은 플러그인에 의해 내 서비스에서 "노출 된"것입니다. 플러그인을 작성한 적이 없으므로 어떻게 작동하는지 완전히 알 수는 없지만 단순히이 메소드를 "아무 곳에도"호출 할 수는 있습니다. – Krystian

+0

그러면 그들은 아마도 모든 서비스 (가능한 컨트롤러와 도메인 객체)에 메타 클래스를 지정하고있을 것입니다. 간단히 메타 클래스로 서비스 할 수 있습니다. 내 대답을 업데이트 할게. –

관련 문제