2012-11-08 76 views
1

使用MockFor如何为重载方法编写单元测试。重载方法的Groovy单元测试

例如

public HttpResponse execute(HttpUriRequest request, HttpContext context) 

public HttpResponse execute(HttpHost target, HttpRequest request) 

我已经写:

 def responseMocker = new MockFor(HttpResponse.class) 
     HttpResponse response = responseMocker.proxyInstance() 
     def requestMocker = new MockFor(HttpUriRequest.class) 
     def request = requestMocker.proxyInstance() 
     def contextMocker = new MockFor(HttpContext.class) 
     def context = contextMocker.proxyInstance(); 
     def clientMocker = new MockFor(HttpClient.class) 
     clientMocker.demand.execute(request, context) { response } 

     HttpClientSample client = new HttpClientSample(clientMocker.proxyInstance()) 

     assertEquals response, client.execute(request,context) 

上面这个测试失败:

groovy.lang.MissingMethodException:没有签字:方法E:....

回答

2

你需要指定所要求的方法是这样的:

mock.demand.execute { HttpUriRequest request, HttpContext context -> ... } 
mock.demand.execute { HttpHost target, HttpRequest request -> ... } 

这将绑定所要求的方法,以适当的重载方法签名。

+0

你是一个救生员! – Stainedart

+0

我的荣幸:-) –

+0

我知道我不应该用评论来说谢谢,但欢呼的家伙! – reevesy