Test del motore delle rotaie: usa l'app fittizia o l'app genitore reale?

2

Uso i motori Rails per suddividere una grande app in parti più piccole. L'app principale gestisce principalmente utenti e autenticazione.

In uno dei miei test motore, voglio accedere a un utente prima di ogni test. Come devo accedere a questa funzionalità di accesso utente, che esiste nell'app padre, dal motore?

Sembra che ci siano due opzioni:

1) Costruisci l'autenticazione dell'utente nell'app fittizia. Quando esegui rails plugin new app_name --mountable , nella tua cartella di test viene creata una "app fittizia", solo una semplice app Rails. Durante i test il motore è montato su questa app fittizia. Per i test di funzionalità (integrazione, accettazione, what-have-you), ho pensato che sarebbe stato utile utilizzare oggetti reali quando possibile. Quindi stavo progettando di utilizzare una fabbrica per creare un utente reale e quindi accedere a quell'utente. Per fare ciò con l'app fittizia, avrei bisogno di costruire quella funzionalità utente in.

Questo sembra un problema perché se la vera app padre cambia, devo cambiare anche questa app fittizia.

2) Metti tutti i miei test nell'app genitore. Questo funzionerà bene, penso, ma sembra strano. Mi sento come se dovessi mettere i miei test del motore nel motore.

    
posta niftygrifty 14.04.2014 - 04:06
fonte

1 risposta

0

Potrebbe esserci qualcosa che manca dalla mia comprensione dei vincoli che affronti. Avrei pensato:

  1. L'accesso utente fa parte della configurazione per ciascun test. Fallo comunque come parte del framework di test. Se può chiamare il genitore, va bene. Se può solo impostare alcune variabili di stato va bene anche così. [Non so cosa intendi per app fittizia.]
  2. I test del motore dovrebbero essere parte del motore, piuttosto che parte del genitore. Dovrebbero avere dipendenze minime.

Forse l'informazione mancante è ciò che è implicito dal login dell'utente e il motivo per cui è difficile.

È una parte di routine nella costruzione di qualsiasi tipo di test automatizzato, sia esso unità, funzionale o integrazione, che devi scrivere mock e stub. Penso che sia il modo di pensare a questa situazione. Non hai bisogno di una vera convalida dell'utente, solo una finta 'abbastanza buona'.

    
risposta data 14.04.2014 - 07:31
fonte

Leggi altre domande sui tag