Attualmente sto costruendo un'applicazione con un'architettura a strati in C. Attualmente, ho costruito e testato il livello inferiore, che è un modulo di rete, fornendo funzionalità come la connessione / disconnessione, l'invio di messaggi, ecc.
Inoltre, sto costruendo un altro livello, che implementa un protocollo di comunicazione. Ha funzionalità come connect, che chiama internamente network_connect per creare la connessione effettiva e svolge attività legate al protocollo, come la registrazione su un server.
Ora, il problema è come devo testare il secondo strato? L'approccio originale era quello di creare 2 thread, aprire un server su uno di essi, connettersi ad esso e monitorare il traffico (in pratica controlla se i dati relativi al protocollo richiesti sono stati trasferiti). Tuttavia, non ho bisogno di testare la connessione di rete effettiva, poiché è già stata testata nei test per il modulo di rete e ritengo che questo approccio sia troppo complicato.
Un approccio che potevo pensare era quello di esporre il descrittore del file socket interno dal modulo di rete tramite getter / setter (che comunque avevo bisogno) e sostituire la connessione di rete con una pipe. Questo approccio funziona per la maggior parte delle operazioni, ad eccezione della connessione effettiva, in cui la routine di connessione alla rete viene chiamata internamente. Inoltre, la connessione in questo caso viene effettuata su un server il cui ip / port non è esposto al di fuori di questo modulo (attualmente è definito come costante e verrà presto spostato in un file di configurazione).
Come dovrei avvicinarmi al test di questo modulo?