1

内部にrestメソッドを含むコントローラーをテストすることは可能ですか?

    @RequestMapping(value = "/user", method = RequestMethod.PUT,consumes="application/json")
    public ResponseEntity<String>createNewAccount(HttpEntity<String>request) {
//do something

}

http ヘッダー、uri、およびコンテンツをこのメソッドに送信する偽の http 要求を使用して、このメソッドを呼び出すにはどうすればよいですか? これを行うスタブまたはモッククラスはありますか? 何かのようなもの

httpMockRequest.consume(uri,headers, body,method, controller class);

次に、コントローラーに入り、使用される uri と http メソッドに基づいてリクエスト マッピングを探し、実行して、http ヘッダーとコンテンツを httpMockRequest テスト オブジェクトから送信しますか?

そのようなものは Spring や Java EE に存在しますか?

ちなみにSpring3を使っています。

4

1 に答える 1

1

これを行う最も簡単な方法は、コントローラーをインスタンス化し、メソッドをコントローラーに直接呼び出すことです。テストでは、フロー全体 (サーブレットからメソッドまで) ではなく、コントローラーの実装のみをテストする必要があります。

私は通常、テスト実装で次のようなことを行います。

Controller c = new Controller();
// configure controller c with mock services
ResponseEntity<String> re = c.createNewAccount(new HttpEntity<String>("{\"property\":10}"));
// check response entity (parsing json of re.getBody())

ヘッダーの場合、次のコンストラクターがあります。

HttpEntity(T body, MultiValueMap<String, String> headers)

ここでは、コントローラーとメソッドを解決するためだけに使用されるため、URI 自体は重要ではありません。

于 2012-06-21T10:01:25.773 に答える