L'ho gestito in modi diversi a seconda di cosa era "richiesto" e di cosa era "bello avere" per poterlo sviluppare. Come hai identificato, a volte non ti interessa solo far ruotare tutte le diverse parti e pezzi per alzare l'app in modo da poter controllare una correzione CSS. Il modo in cui lo gestisci dipende dal tuo ambiente.
Configurazione per l'utilizzo dei servizi esistenti
Se si dispone di un ambiente di sviluppo / test stabile con i servizi richiesti, può essere facile modificare semplicemente il file di configurazione per utilizzare tali servizi. Perché attivare la propria versione dell'API che non è cambiata da mesi quando è possibile utilizzare la versione identica sul server di sviluppo? Ciò si basa sulla stabilità di tali cose e sulla possibilità di accedere a tali servizi. Alcuni servizi non saranno disponibili in questo modo, quindi potrebbe non funzionare.
Un'altra opzione sarebbe installare IIS / Apache / etc localmente e configurare i servizi appropriati per essere sempre pronti. Quindi non devi mai preoccuparti di avviarli ogni volta che vuoi sviluppare. Sono lì solo ad aspettarti quando ne hai bisogno.
DI
Se non è possibile utilizzare i servizi esistenti, se si dispone di una buona iniezione di dipendenza, è possibile sfruttarla. Una volta abbiamo dovuto fare alcuni test di una pagina web del carrello. E volevamo eseguire test automatici che avrebbero dovuto colpire l'API del gateway di pagamento solo per ottenere una risposta in modo che il codice potesse proseguire. Ma il nostro server CI è stato siloedato in modo tale da non poter accedere a tali API. Quindi abbiamo usato alcuni trucchi di configurazione e DI per utilizzare alcune classi di API di pagamento test / simulate. (Dato che testare l'API di terze parti non era la parte importante del test, andava bene.) Abbiamo appena soppresso una classe che restituirebbe una risposta "abbastanza buona" per il nostro codice. Se possibile, potresti essere in grado di disattivare un servizio di accesso di autenticazione fittizio che restituisce sempre una buona risposta solo per lo sviluppo.
Rendi tutto più semplice
Sugli altri progetti, prendere in giro cose con DI non era un'opzione praticabile e non c'erano opzioni davvero buone per l'utilizzo dei servizi test / server di sviluppo. In quei casi abbiamo trascorso un po 'di tempo a rendere più semplice l'impostazione. In un progetto abbiamo creato un contenitore Docker che avremmo potuto avviare e che avrebbe avviato tutti i piccoli servizi di cui avevamo bisogno. Un comando di shell veloce, aspetta un po 'per l'avvio e BAM, tutto ciò di cui avevamo bisogno. In un altro progetto, abbiamo appena scritto uno script di shell per avviare solo i progetti / i siti web / gli ex appropriati. Questo è il tipo di soluzione a forza bruta per cui non esiste un'alternativa migliore. Funziona quando non puoi sfruttare altre tecniche.