Ho avuto una controversia con un collega su quando eseguire i test di unità JavaScript in un ambiente CI in una delle due diverse volte. Chiamiamo le due parti PE (pro-early) e PL (pro-late).
Precoce (contro src)
Esecuzione dei test contro il codice sorgente direttamente dal sistema di controllo della versione.
PE dice che dovremmo prima eseguire il codice più rischioso e "fallire velocemente". Entrambe le parti concordano sul fatto che dovremmo eseguire i test unitari in questo modo durante lo sviluppo perché il tempo di ciclo è molto più veloce. PE afferma che dal momento che è necessario che la build sia configurata per essere eseguita in qualsiasi momento, una configurazione alternativa che esegue i test in ritardo costituisce la duplicazione e il bloat.
In ritardo (rispetto a dist)
L'esecuzione degli stessi test con il codice è stata impacchettata (concatenata e minimizzata).
PL dice che dovremmo testare il codice mentre viene spedito. PL sostiene di aver sperimentato scenari dispendiosi in termini di tempo in cui il codice funzionava quando veniva eseguito direttamente dall'origine, ma non era riuscito a causa di qualcosa che andava storto quando il codice veniva impacchettato per la distribuzione.
PE afferma che un'ipotetica "qualcosa potrebbe andare storto" è un argomento debole. E comunque non è compito di CI prendere questo tipo di problema. Il codice distribuibile viene testato dal QA prima della spedizione.
Ulteriori dettagli
"I primi e tardi in CI" non sono un'opzione, con grande disappunto di PEL.
Il codice è modularizzato usando AMD e RequireJS. Stiamo usando Karma per i test unitari e Grunt per lo script di costruzione.
Quindi qual è - presto o tardi?
C'è una parte sicuramente giusta? Ci mancano alcune considerazioni che possono influenzare una persona dall'altra parte?