【问题标题】:Groovy unit test for overloaded method重载方法的 Groovy 单元测试
【发布时间】:2012-11-08 22:09:06
【问题描述】:

使用 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: 没有方法签名: ....

【问题讨论】:

    标签: java unit-testing testing groovy mocking


    【解决方案1】:

    您需要像这样指定所需的方法:

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

    这会将所需的方法绑定到适当的重载方法签名。

    【讨论】:

    • 我知道我不应该用评论来表示感谢,但是干杯!
    • 但是你如何要求它在不替换方法体的情况下被执行?我仍然希望调用原始方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多