Spring Boot Integration Test von Routes

chris080

Mitglied
Sorry ich habe in der Themenauswahl kein JUnit oder Testing gefunden. Leider gab es auch keine Suchfunktion. Sorry, falls das hier falsch ist.

Ich habe eine Vaadin-Komponente mit Spring Boot. Ich will einen Aufruf ihrer Route testen und dann prüfen, welche Response ich bekomme.

Ursprünglich, wollte ich mit Userrollen testen, ob eine geschützte Route auch noch geschützt ist. Aber wusste nicht, dass selbst das einfache Prüfen der Response solche Probleme bereitet. Ich habe schon so viele Sachen versucht, ich weiß gar nicht mehr, was ich nicht versucht habe.

MethodUsedEditView.java
Java:
@Component
@Scope("prototype")
@RolesAllowed(value = {Role.ROLE_ADMIN})
@Route(value = "methodUsed/create", layout = CustomAppLayout.class)
@ResponseBody
public class MethodUsedEditView extends VerticalLayout implements BeforeEnterObserver {
    private final DSLContext dslContext;
    private MethodUsedService methodUsedService;

    public MethodUsedEditView(DSLContext dslContext, MethodUsedService methodUsedService) {
        this.dslContext = dslContext;
        this.methodUsedService = methodUsedService;
    }
 
    ...
}

Und dazu die Testklasse AuthorizationTest.java
Java:
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class AuthorizationTest {

    @LocalServerPort
    private int port;
 
    private MockMvc mockMvc;

    @BeforeEach
    public void setUp() {
        DSLContext dslContextMock = mock(DSLContext.class);
        this.port = 8899;
        MethodUsedService methodUsedService = mock(MethodUsedService.class);
        this.mockMvc = MockMvcBuilders
            .standaloneSetup(new MethodUsedEditView(dslContextMock, methodUsedService))
            .build();
    }

    @Test
    //@WithMockUser(roles = "ADMINISTRATOR")
    public void testAccessWithCorrectRole() throws Exception {
        mockMvc.perform(get("localhost:" + port + "/prf2/methodUsed/create")).andExpect(status().isOk());
    }
}

Und der Test gibt mir
Java:
java.lang.AssertionError: Status expected:[200] but was:[404]
zurück. Er findet sie nicht und ich weiß nicht wieso. Habe sogar die ganze Route angegeben und auch das half nicht. Denke irgendwas mache ich mit Spring Boot und den Beans nicht richtig, weshalb er die Abhängigkeit nicht herstellen kann oder ich brauche für die Tests eine spezielle Config, von der ich (leider) nichts weiß und wäre sie da, wüsste Spring Boot die View bzw. die zugehörige Route zu triggern.
 
Okay danke. Aber kann man Routes nicht irgendwie mit JUnit testen?

Leider ist es in Spring Boot mit den Autowiring und Configs hier und da für mich sehr schwer ersichtlich, was tatsächlich wo passiert. Also besonders für jemanden wie mich, der von nodeJS mit TypeScript kommt. Dort wurde zwar viel händisch gemacht, aber ich hatte so immer die Möglichkeit zu sehen, wo wann welche Daten wie verarbeitet/weitergeleitet werden. Mit dem Autowiring-Konzept muss ich erstmal warm werden xD
 

Zurück
Oben