나는 쓰려고하는 서비스에 대한 테스트 케이스를 작성하는 방법을 알아 내려고하고있다.그루비 HTTPBuilder 응답을 조롱
서비스는 HTTPBuilder를 사용하여 일부 URL에서 응답을 요청합니다. HTTPBuilder 요청은 성공 또는 실패에 대한 응답 만 확인하면됩니다.
boolean isOk() {
httpBuilder.request(GET) {
response.success = { return true }
response.failure = { return false }
}
}
그래서, 나는 내가 주장 할 수 내 테스트에 성공/실패가 될하기 위해 내가 응답을 설정할 수 있도록 HTTPBuilder을 조롱 할 수 있도록하려면 : 서비스 구현으로 간단하게 뭔가를 할 것 내 서비스의 isOk
메서드는 응답이 성공한 경우 True를 반환하고 실패한 경우 False를 반환합니다.
내가 HTTPBuilder 요청을 조롱하고 GroovyTestCase에서 응답을 설정하는 방법에 대한 도움을받을 수 있습니까? result
필드가 true 인 경우
class MockHttpBuilder {
def result
def requestDelegate = [response: [:]]
def request(Method method, Closure body) {
body.delegate = requestDelegate
body.call()
if (result)
requestDelegate.response.success()
else
requestDelegate.response.failure()
}
}
, 그것은 그렇지 않으면 failure
의 success
폐쇄를 호출 할 수 있습니다 :
감사 : 여기에 대신 모의 클래스의 MockFor를 사용하는 예제가있다. '결과'를 true/false로 설정하는 것이 무엇인지 이해하지 못합니다. 또한 모의 (Mock)보다 스텁 (Stub)과 같은 것이 아닌가? – C0deAttack
테스트를 설정할 때 직접 결과를 설정해야합니다. 예 : '새로운 MockHttpBuilder (결과 : true)'. 그루비 조롱을 사용하는 대안을 추가했습니다. – ataylor
Ataylor의 응답이 좋았습니다. 응답 상태를 직접 설정 한 다음이를 사용하여 매핑에서 올바른 종료를 실행한다는 점을 제외하고는 거의 동일한 구현이있었습니다. 그러나 이것은 정말로 Stub 조롱입니다. 정확한 접근 방식은 응답을 제공하는 클라이언트를 조롱하는 것이라고 생각합니다. – Gepsens