7

Jersey を使用して REST API の実装に取り​​組んでいます。(部分的な更新)については、Jersey がサポートしていないためPATCH、独自のカスタム実装を実装しました。PATCH

現在、その実装に関する機能テストを作成する方法を見つけようとしています。そのフレームワークでそのサポートを利用できる他のメソッド(、、、、)PUTPOSTジャージーテストフレームワークを使用しています。GETDELETE

ジャージ テスト フレームワークの実装を拡張して、機能テストを作成する方法はありPATCHますか? PATCHそうでない場合、Jersey の実装をテストするために使用できる他のテスト フレームワークはありますか?

誰かが例を提供できれば、それは素晴らしいことです。

4

4 に答える 4

4

追加の構成を行わずにHTTP PATCHビアを送信するには:JAX RS Client API

 client.target("$baseUrl$restUsersUrl/$userId")
                .request("application/json")
                .build("PATCH", Entity.entity(json2Update, MediaType.APPLICATION_JSON))
                .invoke()
于 2016-03-29T16:20:30.077 に答える
-1

単純な文字列を使用すると、これでうまくいきます。しかし、Patch メソッドが単純な文字列を受け入れて返さない場合に、これを行う方法を知っている人はいますか? 以下の私の例を参照してください。Response の戻り値の型は、渡された引数の型とは異なります。どちらも単純型ではありません。200 の代わりに、常に 400 および/または ObjectPatch インスタンスを構築できないというメッセージが表示されます。そして、applyメソッドのみのインターフェースなので、それは理解しています。しかし、どういうわけか、実行時にそれから AttentionPatchResource オブジェクトを構築することができます。残念ながら、JerseyTest フレームワークを使用している場合はそうではありません。

@PATCH
 @Path("/something")
 @Produces(MediaType.APPLICATION_JSON)
 @Consumes({ PatchMediaTypes.APPLICATION_MERGE_PATCH_JSON, PatchMediaTypes.APPLICATION_JSON_PATCH })
    public Response updateAttention( //
            @Parameter(schema = @Schema(implementation = AttentionPatchResource.class)) ObjectPatch patch) {

        Attention attention = attentionService.find();
        AttentionPatchResource patchResource = attentionAdapter.toPatchResource(attention);

        AttentionPatchResource patchedResource = patch.apply(patchResource);
        Attention patchedAttention = attentionAdapter.fromPatchResource(attention, patchedResource);

        AttentionResource resource = attentionAdapter.toResource(patchedAttention);

        return Response.status(Status.OK).entity(resource).build();
    }
于 2020-06-03T13:38:30.843 に答える