2015-05-04 12 views
14

Stiamo sviluppando un progetto con Java su Play Framework 2.x e alcuni endpoint di riposo. Inoltre abbiamo alcuni casi di test per loro come la seguente:Come simulare i controller/rest endpoint per il test dell'unità in Play Framework 2.x [Java]

@Test 
    public void testLogout() throws Exception { 
     FakeRequest request = new FakeRequest("GET", "/product/api/v1/logout"); 

     Result result = route(request); 

     assertThat(status(result)).isEqualTo(OK); 
     assertThat(contentType(result)).isEqualTo("application/json"); 
     assertThat(contentAsString(result)).contains("result"); 
    } 

D'altra parte, abbiamo alcuni metodi [come] register() che non può testare nel database di produzione.

Qual è il modo corretto per verificare i metodi che influiscono sul database prod? Penso che sto deridendo ma non sono sicuro di ciò e non so come fare. Se il mocking è una buona scelta, c'è qualche esempio di lavoro?

Per favore, dammi qualche consiglio su questo problema.

+0

hai controllato questi collegamenti? https://www.playframework.com/documentation/2.3.4/JavaTest e https://www.playframework.com/documentation/2.3.4/JavaFunctionalTest – sfat

+0

[Pact JVM] (https://github.com/DiUS/pact-jvm) sembra abilitare ciò che vuoi fare, ma forse dovresti elaborare la tua domanda. È derivato da Pact for Ruby e "consente test sui contratti guidati dai consumatori, fornendo un servizio di simulazione e DSL per il progetto consumer e la riproduzione e la verifica dell'interazione per il progetto del fornitore di servizi". –

+0

@sfat: ovviamente ho controllato quei link e ho un sacco di test. Ho solo bisogno di prendere in giro .. – OguzOzkeroglu

risposta

2

Penso che il modo corretto non sia quello di testare il database di produzione.

Divido i test in 2 gruppi, unit test e test di integrazione. I test unitari sono comunemente noti e nei test di integrazione provo tutto ciò che è esterno all'applicazione stessa (ad esempio, il database) e le connessioni tra di essi.

I test dell'unità vengono eseguiti utilizzando un mock nel database di memoria quando necessario e test di integrazione su un database con la stessa struttura di quello di produzione ma non lo stesso database.

Spero che il mio approccio ti possa aiutare.

+0

Grazie per la tua risposta, ma non ho scelta sul database dei test, questa è la scelta dell'azienda (modo corretto o no ..). Voglio solo sapere come risolvere i metodi API di riposo (se possibile). – OguzOzkeroglu

Problemi correlati