3
jms-grails plugin에서 제공하는 sendJMSMessage 메소드를 사용하는 서비스가 있습니다. 몇 가지 단위 테스트를 작성하고 싶지만이 방법을 "조롱하는"방법을 모르므로 전혀 아무것도 수행하지 않습니다. 팁이 있습니까?플러그인에서 메소드를 사용하고있는 grails 서비스를 어떻게 테스트 할 수 있습니까?
jms-grails plugin에서 제공하는 sendJMSMessage 메소드를 사용하는 서비스가 있습니다. 몇 가지 단위 테스트를 작성하고 싶지만이 방법을 "조롱하는"방법을 모르므로 전혀 아무것도 수행하지 않습니다. 팁이 있습니까?플러그인에서 메소드를 사용하고있는 grails 서비스를 어떻게 테스트 할 수 있습니까?
메서드를 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
개까지 사용할 수 있습니다.
안녕하세요 Jarred, 불행히도이 방법은 서비스 중이 아닙니다. 그것은 플러그인에 의해 내 서비스에서 "노출 된"것입니다. 플러그인을 작성한 적이 없으므로 어떻게 작동하는지 완전히 알 수는 없지만 단순히이 메소드를 "아무 곳에도"호출 할 수는 있습니다. – Krystian
그러면 그들은 아마도 모든 서비스 (가능한 컨트롤러와 도메인 객체)에 메타 클래스를 지정하고있을 것입니다. 간단히 메타 클래스로 서비스 할 수 있습니다. 내 대답을 업데이트 할게. –