Spring Boot の @MockMvc を使ったコントローラテストで
.andExpect(model().attribute("user", user))
とやると、user の中身が一緒でも
Expected :com.example.demo.entity.User@4a79ac45 Actual :com.example.demo.entity.User@69f27623
となってしまいます。
==
みたいに参照アドレス比較ではなく、
.equals()
みたいに中身の比較をしたい場合、
どうすればいいですか?
attribute()
は ModelResultMatchers のメソッドです。
バージョン
Spring Boot 2.1.6
コード
User.kt
kotlin
1class User { 2 @NotEmpty @Size(max = 10) 3 var name: String? = null 4}
UserController.kt
kotlin
1@PostMapping("users") 2fun create(@Validated user: User, /*...*/){ 3 /*...*/ 4 redirectAttributes.addAttribute("user", user) 5 return "users" 6}
UserControllerTest.kt
kotlin
1@Test 2fun createTest() { 3 var user = User() 4 user.name = "hamajun" 5 6 mockMvc.perform(MockMvcRequestBuilders.post("/user/") 7 .param("name", "hamajun")) 8 .andExpect(model().attribute("user", user)) 9}
テストの実行結果
... Expected :com.example.demo.entity.User@4a79ac45 Actual :com.example.demo.entity.User@69f27623 ...
回答1件
あなたの回答
tips
プレビュー