1

javaで書かれたクラスのテストケースをgroovyで書こうとしています。Java クラス (name:Helper) には静的メソッドがあり、HttpClient オブジェクトが取得され、executeMethod が呼び出されます。このクラスを単体テストするために、グルーヴィーなテスト ケースでこの httpClient.executeMethod() をモックしようとしていますが、正しくモックできません。

以下はJavaクラスです

public class Helper{

    public static message(final String serviceUrl){   

        HttpClient httpclient = new HttpClient();
        HttpMethod httpmethod = new HttpMethod();

        // the below is the line that iam trying to mock
        String code = httpClient.executeMethod(method);

    }
}

Groovy からこの静的メソッドを単体テストする方法に関するアイデア。httpClient オブジェクトはクラスメソッド内のオブジェクトであるため、グルーヴィーなテストケースでこのオブジェクトをモックするにはどうすればよいですか?

これは私がこれまでに持っているテストケースです.nullにモックしようとしていますが、起こっていません...

void testSendMessage(){
    def serviceUrl = properties.getProperty("ITEM").toString()

    // mocking to return null   
    def mockJobServiceFactory = new MockFor(HttpClient)
    mockJobServiceFactory.demand.executeMethod{ HttpMethod str ->
        return null
    }

    mockJobServiceFactory.use {         
        def responseXml = helper.message(serviceUrl)

    }   
}
4

1 に答える 1

0

使用できます

HttpClient.metaClass.executeMethod = {Type name -> doSomething}

Type正しい、つまり文字列、マップなどでクロージャー署名を宣言する必要があります。

void testSendMessage(){
    def serviceUrl = properties.getProperty("ITEM").toString()

    // mocking to return null   
    HttpClient.metaClass.executeMethod = {HttpMethod str -> null}
    def responseXml = helper.message(serviceUrl)

}
于 2012-08-31T15:51:40.357 に答える