Ich habe gerade begonnen, Komponententests (unter Verwendung von xUnit und Moq) auf einem bereits bestehenden Projekt von mir zu implementieren. Das Projekt verwendet weitgehend die Abhängigkeitsinjektion über den Einheitscontainer.Moq und Zugriff auf die aufgerufenen Parameter
Ich habe zwei Dienste A und B. Service A wird in diesem Fall getestet. Dienst A ruft B auf und gibt ihm einen Delegaten für eine interne Funktion. Dieser "Rückruf" wird verwendet, um A zu benachrichtigen, wenn eine Nachricht empfangen wurde, die verarbeitet werden muss.
Daher ist eine Anrufe (wobei b eine Instanz des Dienstes B):
b.RegisterHandler(Guid id, Action<byte[]> messageHandler);
Um Dienst A zu testen, ich muss in der Lage sein messageHandler
zu nennen, da dies der einzige Weg ist zur Zeit es akzeptiert Mitteilungen.
Kann dies mit Moq geschehen? dh. Kann ich Service B nachspielen, so dass, wenn RegisterHandler
aufgerufen wird, der Wert von messageHandler
zu meinem Test ausgegeben wird?
Oder muss ich das neu gestalten? Gibt es irgendwelche Entwurfsmuster, die ich in diesem Fall verwenden sollte? Kennt jemand gute Ressourcen für diese Art von Design?