Per creare una codebase controllabile , ho sottratto una certa dipendenza esterna. Per essere precisi, questa dipendenza viene effettivamente implementata da un SDK del fornitore e comunica direttamente con un hardware. In quanto tale, questa è l'interfaccia:
public interface IHardware
{
void Send(IMessage message);
event EventHandler<MessageEventArgs> OnMessage;
}
(La comunicazione con l'hardware è completamente assincreta)
Non appena inizializzato, gli eventi possono essere generati dall'hardware (tramite l'evento OnMessage). Il codice cliente può inviare messaggi in qualsiasi momento e le possibili risposte saranno ricevute sotto forma di eventi.
Ora, questa interfaccia molto semplice deve essere implementata; L'implementazione è solo una delega alla classe SDK attuale. Il problema è questo: come scrivo i test per provocare la corretta implementazione ?