Ich habe ContextListener
die injizieren in ServletContext
Objekt für die Arbeit mit der Datenbank. Und das DBJoint
Objekt erstellen in Verfahren, die Test:Wie man Objekte mockt, die innerhalb der Testmethode entstehen?
@WebListener
public class ContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
final ServletContext servletContext =
servletContextEvent.getServletContext();
final DBJoint joint = new DBJointHandler(
"database_scripts", "authentication_database");
servletContext.setAttribute("db", joint);
}
}
Zum Testen servletContext.setAttribute("db", joint);
I DBJoint joint
für Senden in setAttribute
benötigen.
Mein Test:
@Test
public void whenThen() {
final ServletContextEvent event = mock(ServletContextEvent.class);
final ServletContext context = mock(ServletContext.class);
when(event.getServletContext()).thenReturn(context);
final ContextListener listener = new ContextListener();
listener.contextInitialized(event);
DBJoint joint = ..?// how to mocking this?
verify(context).setAttribute("db", joint);
}
- Testing für
servletContext.setAttribute("db", joint);
ist möglicherweise? - Wenn die Antwort "Ja", wie.
Vielen Dank.
Ihre bereits wissen, wie diese Klassen zu verspotten. Ich denke, was Sie brauchen, ist 'org.mockito.ArgumentCaptor;', wo Sie die DBJoint-Menge "servletContext.setAttribute (" db ", joint); Sobald Sie das "gemeinsame" Objekt erhalten haben, können Sie es überprüfen. Hofft diese Hilfe. –
Ja, schauen Sie in 'org.mockito.ArgumentCaptor' – liminal
Upvoting hier - nur um meine Wertschätzung für Ihre Einstellung auszudrücken! Und was ich zu der anderen Frage sagen wollte: Es war schön geschrieben - aber nächstes Mal: Führe die Ausnahmebotschaft über eine Suchmaschine aus, bevor du eine Frage stellst. Das kann dir viel Zeit sparen. – GhostCat