Mockito - 这里没有任何交互异常
我正在为我的Spring MVC控制器编写测试。 我得到一个org.Mockito.exception.verifications.NoInteractionWanted例外,该堆栈跟踪:Mockito - 这里没有任何交互异常
无相互作用想在这里: - >在com.test.TestInsertUtente.testInserimentoUtente(TestInsertUtente.java:124) 但发现这种互动: - >在com.test.UtenteForm.insertUtente(UtenteForm.java:149)
为什么?
public class TestInsertUtente {
private MockMvc mockMvc;
@Mock
private UtenteService utenteService;
@InjectMocks
private UtenteForm utenteForm;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
when(utenteService.insertUtente(isA(Utente.class))).thenReturn(new Utente("utente.test","utente","test","[email protected]","test",0));
this.mockMvc = MockMvcBuilders.standaloneSetup(utenteForm).build();
}
@Test
public void testInserimentoUtente() throws Exception {
mockMvc.perform(post("/all/utente/form/insert/${action}","resta")
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
.param("utente", "utente.test")
.param("nome", "utente1")
.param("cognome", "test")
.param("email", "[email protected]")
.param("password", "test")
.param("statoRecord", "0")
.sessionAttr("utente", new Utente())
).andExpect(status().isMovedTemporarily())
.andExpect(view().name("redirect:/web/all/utente/form/utente.test/modifica"))
.andExpect(redirectedUrl("/web/all/utente/form/utente.test/modifica?insert=true"))
.andExpect(model().size(2))
.andExpect(model().attribute("insert", equalTo(true)));
ArgumentCaptor<Utente> formObjectArgument = ArgumentCaptor.forClass(Utente.class);
verify(utenteService, times(1)).insertUtente(formObjectArgument.capture());
verifyNoMoreInteractions(utenteService);
}
}
我不是测试insertUtente方法。我正在测试控制器。 我嘲笑utenteService对象,我希望它返回一个正确的Utente对象实例。
你的测试同时使用时,确认为同一电话:utenteService.insertUtente()
OK
在你的设置()告诉你的Mockito返回新Utente(” utente.test“,”utente“,”test“,”[email protected]“,”test“,0)当它被任何Utente实例调用时。
OK
但是你没有利用这种期望,即你没有断言这Utente实例返回或以其他方式在你的控制器使用。
好了我要补充这一说法
然后,在testInserimentoUtente()你验证utenteService.insertUtente()被调用,你捕获该调用传入的参数,但你不对所俘获论点的任何断言。
我删除了帖子中的断言,不要太长。
我建议应该有任何的期望时,或者根据您的控制器与utenteService.insertUtente的repsonse(),但是你并不需要同时当期望和验证断言做什么验证断言。如果你清楚地确定了对utenteService.insertUtente()的期望,那么我怀疑不再需要调用verifyNoMoreInteractions。
我的控制器对服务响应没有任何作用。 我称:
- 验证以验证insertUtente方法只调用一次
- verifyNoMoreInteractions验证模拟对象的任何其他方法的测试