私は私の@RestController
のいずれかの簡単なテストを書き、入力@RequestBody
が正しくPersonDTO
にマップされていることを主張したい:@RestControllerの@RequestBodyをjunitでテストするには?
@RestController
public class PersonServlet {
@PostMapping("/person")
public PersonRsp find(@RequestBody PersonDTO dto) {
//business logic
}
}
public class PersonDTO {
private String firstname, lastname;
}
は質問:どのように私はそのサーブレットにJSON
リクエストボディを送ることができます。さらに、PersonDTO
フィールドのすべてが正しく設定されているかどうかを調べます。
これはおそらくこれに似ていますが、解析されたDTOを調べる/スパイする方法はわかりません。
@RunWith(SpringRunner.class)
@WebMvcTest(PersonSerlvet.class)
public class PersonTests {
@Autowired
private MockMvc mvc;
@Test
public void testExample() throws Exception {
this.mvc.perform(get("/person"))
.andExpect(status().isOk());
}
}
@Duplicate marker:これは、リンクされた質問の複製ではありません(これは、応答本文の文字列の読み方です)。私は実際にリクエストボディのテストを求めています。
ロガーあり? –
私はロガー出力の検証が単体テストの良いアサーションであるとは思わない! – membersound
ユニットテストを依頼するのではなく、統合テストを行いたいのですが、テストで入力をテストし、実稼動のためにそれを変更しない場合は、モックアペンダーまたはメソッドインターセプターを使用できます。 –