Ich habe gerade begonnen, Unit-Tests (mit xUnit und Moq) auf einem bereits etablierten Projekt von mir zu implementieren. Das Projekt verwendet ausgiebig Abhängigkeit Injektion über den Unity-Container.
Ich habe zwei Dienste A und B. Dienst A ist derjenige, der in diesem Fall getestet wird. Dienst A ruft B auf und übergibt ihm einen Delegaten an eine interne Funktion. Dieser "Rückruf" wird verwendet, um A zu benachrichtigen, wenn eine Nachricht eingegangen ist, die er bearbeiten muss.
Daher ruft A an (wobei b eine Instanz des Dienstes B ist):
b.RegisterHandler(Guid id, Action<byte[]> messageHandler);
Um Dienst A zu testen, muss ich in der Lage sein, Folgendes aufzurufen messageHandler
da dies derzeit die einzige Möglichkeit ist, Nachrichten zu empfangen.
Kann dies mit Moq geschehen, d.h. kann ich den Dienst B nachbilden, so dass, wenn RegisterHandler
aufgerufen wird, wird der Wert von messageHandler
zu meinem Test weitergegeben wird?
Oder muss ich das neu gestalten? Gibt es irgendwelche Entwurfsmuster, die ich in diesem Fall verwenden sollte? Kennt jemand eine gute Quelle für diese Art von Design?