0
I Controller-Methoden am Testen, das sind Anrufe mit:Wie getCurrentLoginId in Spring-Sicherheit zu verspotten?
SecurityUtils.getCurrentLoginId()
Allerdings, wenn ich diesen Test laufen
SecurityContext securityContext = Mockito.mock(SecurityContext.class);
Mockito.when(SecurityUtils.getCurrentLoginId()).thenReturn((long) 1);
SecurityContextHolder.setContext(securityContext);
RequestBuilder requestBuilder = MockMvcRequestBuilders
.post(uri)
.with(user("admin").password("pass").roles("USER","ADMIN"))
.with(csrf())
.param("blogId", "" + blogId)
.content(mapToJson(post))
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON);
ich:
java.lang.IllegalStateException: User not found!
Ich versuche powermock mit Mockito anzuwenden, aber wenn ich die PowerMockRunner.class hinzufüge - sieht es so aus, als ob ich den WebApplicationContext verlieren würde - was könnte falsch sein? – poseid
Das Problem könnte die RunWith den SpringTestRunner Kontext verlieren – poseid
Sie haben Recht - Spring Context aktivieren müssen Sie Tests mit Spring Junit Runner ausführen, und PowerMock erfordert eine eigene Runner aktiviert werden. Um dieses Problem zu lösen, stellt PowerMock @PowerMockRunnerDelegate zur Verfügung. [Hier] (https://github.com/jayway/powerermock/wiki/JUnit_Delegating_Runner#using-powerermock-with-junit-delegation-runner) findest du Erklärungen und einige Beispiele. – mxf