這是我的測試:的Mockito驗證後的對象具有不相同的值相同的對象引用
@Test
public void shouldProcessRegistration() throws Exception {
Spitter unsaved = new Spitter("Gustavo", "Diaz", "gdiaz", "gd123");
Spitter saved = new Spitter(24L, "Gustavo", "Diaz", "gdiaz", "gd123");
SpitterRepository spittlerRepository = Mockito.mock(SpitterRepository.class);
Mockito.when(spittlerRepository.save(unsaved)).thenReturn(saved);
SpitterController spittleController = new SpitterController(spittlerRepository);
MockMvc mockSpittleController = MockMvcBuilders.standaloneSetup(spittleController).build();
mockSpittleController.perform(MockMvcRequestBuilders.post("/spitter/register")
.param("firstName", "Gustavo")
.param("lastName", "Diaz")
.param("userName", "gdiaz")
.param("password", "gd123"))
.andExpect(MockMvcResultMatchers.redirectedUrl("/spitter/" + saved.getUserName()));
Mockito.verify(spittlerRepository, Mockito.atLeastOnce()).save(unsaved);
}
這是我的控制器:
@Controller
@RequestMapping(value = "spitter")
public class SpitterController {
SpitterRepository spitterRepository;
@Autowired
public SpitterController(SpitterRepository spittlerRepository) {
this.spitterRepository = spittlerRepository;
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String processRegistration(Spitter spitter){
spitterRepository.save(spitter);
return "redirect:/spitter/" + spitter.getUserName();
}
}
我想驗證spitterRepository.save
被稱爲傳球同樣unsaved
我在測試中定義了對象。但我得到這個例外:
Argument(s) are different! Wanted:
spitterRepository.save(
[email protected]
);
-> at spitter.controllers.test.SpitterControllerTest.shouldProcessRegistration(SpitterControllerTest.java:48)
Actual invocation has different arguments:
spitterRepository.save(
[email protected]
);
我把這樣的模擬,因爲我模仿表單提交。是不是有另一種方法來比較值?,因爲重寫equals方法修改我的類行爲只是爲了完成一個斷言。 –
在這種情況下,您應該使用@Ruben提出的解決方案。 – Magnilex