10

以前にテストを作成して成功しましたが、今は AssertionError: No value for JSON Path が発生します。

@Test
public void testCreate() throws Exception {
    Wine wine = new Wine();
    wine.setName("Bordeaux");
    wine.setCost(BigDecimal.valueOf(10.55));

    new Expectations() {
        {
            wineService.create((WineDTO) any);
            result = wine;
        }
    };

    MockMultipartFile jsonFile = new MockMultipartFile("form", "", "application/json", "{\"name\":\"Bordeaux\", \"cost\": \"10.55\"}".getBytes());
    this.webClient.perform(MockMvcRequestBuilders.fileUpload("/wine").file(jsonFile))
            .andExpect(MockMvcResultMatchers.status().is(200))
            .andExpect(MockMvcResultMatchers.jsonPath("$.name").value("Bordeaux"))
            .andExpect(MockMvcResultMatchers.jsonPath("$.cost").value(10.55));
}

私が得るエラーは次のとおりです。

java.lang.AssertionError: No value for JSON path: $.name, exception: No results path for $['name']

何が得られていないのか、何が欠けているのかわかりません。

4

6 に答える 6

8

nameレスポンスにvalueのフィールドが含まれていると主張していますBordeaux

を使用して回答を印刷できますthis.webClient.perform(...).andDo(print())

于 2015-11-11T21:11:26.487 に答える
0

jackson-dataformat-xmlプロジェクトに依存関係を追加した後、同じ問題が発生しました。

これを解決するには、応答エンティティを次から変更する必要がありました。

return new ResponseEntity<>(body, HttpStatus.*STATUS*)

return ResponseEntity.*status*().contentType(MediaType.APPLICATION_JSON).body(*your body*).

このようにしてjson、体の as 戻り値の型を直接設定したため、正常に動作します。

于 2019-09-11T08:22:55.783 に答える
-1

あなたがテストしているものは何であっても、もはや.name呼び出されたプロパティを持っていませnameん.エラーメッセージはその部分についてかなり明確です.

java.lang.AssertionError: No value for JSON path: $.name, exception: No results path for $['name']

あなたが質問に投稿したものは何も動作ないようにするために何を変更したかを知っているのはあなただけです。

于 2015-11-11T21:33:15.670 に答える