Ich möchte ein Modul testen, indem ich es über die Ereignisaggregation mit Meldungen versehe, um sicherzustellen, dass es entsprechend reagiert, indem es Eigenschaften entsprechend einstellt oder andere Nachrichten veröffentlicht . Ich bin mit Prism 6. In meinem Projekt hat das Infrastrukturprojekt:Komponententests mit Moq, Prism 6 und Ereignisaggregation
public class ImportantMessage : PubSubEvent<string>
{
}
ModuleA eine Meldung wie diese veröffentlicht:
eventAggregator.GetEvent<ImportantMessage>().Publish(importantString);
ModuleB empfängt die Nachricht wie folgt aus:
eventAggregator.GetEvent<ImportantMessage>().Subscribe(HandleImportantMessage);
Hier ist HandleImportantMessage:
public void HandleImportantMessage(string importantString)
{
. . .
}
Die ModuleB Konstruktor wird wie folgt aufgerufen:
ModuleB(IEventAggregator EventAggregator)
Dieser Konstruktor von dem Prism Rahmen genannt wird. Für Komponententests muss ich eine Instanz von ModuleB erstellen und einen IEventAggregator übergeben, der wahrscheinlich von Moq erstellt wurde. Und ich möchte das so machen, dass die Nachricht, die ich veröffentliche, wichtig ist. Wenn ich den Ausdruck "Komponententests mit moq und Ereignisaggregation" google, gibt es mehrere Referenzen, aber ich habe nicht gesehen, wie einer dieser Ansätze verwendet wird, um "wichtigString" von ModuleA zu ModuleB zu übergeben. Der Beispielcode für Prism 5 erstellt einen falschen Ereignisaggregator, ohne jedoch Moq zu verwenden. Ich verstehe nicht, wie es funktioniert, und sehe nicht, wie man eine Saite damit übergibt.
Mein Testcode beginnt in etwa so aus:
var moqEventAggregator = new Mock(IEventAggregator);
var moqImportantMessage = new Mock<ImportantMessage>();
moqEventAggregator.Setup(x => x.GetEvent<ImportantMessage>());
Einige der Referenzen, die ich gesehen habe so etwas wie Rückkehr innen (eventBeingListenedTo.Object) gelten; an moqEventAggregator, nachdem Setup angewendet wurde. Ich muss natürlich .Setup (etwas) auf moqImportantMessage anwenden, um wichtigeString übergeben, aber ich sehe noch nicht genau was.
Was fehlt mir? Wie gebe ich eine Zeichenfolge mit der gefälschten veröffentlichten Nachricht weiter?
nicht gerade ein Duplikat, aber Sie können wahrscheinlich übertragen diese von NSubstitute MoQ: http: // Stackoverflow.com/questions/35868184/nsubstitute-vs-prisma-eventaggregator-assert-das-aufrufen-eine-methode-trigger-even/35889556 # 35889556 – Haukinger