1

MockForの使用オーバーロードされたメソッドの単体テストを作成するにはどうすればよいですか。

例えば

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:メソッドのシグネチャがありません:...。

4

1 に答える 1

2

次のように、要求されるメソッドを指定する必要があります。

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

これにより、要求されたメソッドが適切なオーバーロードされたメソッドシグネチャにバインドされます。

于 2012-11-09T09:34:07.157 に答える