Ich habe einen Schauspieler bekam, die etwa wie folgt aussieht:Wie Unit-Test ein Akteur, der einen Verweis auf einen anderen Akteur in seiner Methode erhält?
public class MyActor : Actor, IMyActor
{
public async Task<ICustomerActor> GetCustomer()
{
var customerId = await StateManager.TryGetStateAsync<ActorId>(CustomerIdState);
return customerId.HasValue
? ActorProxy.Create<ICustomerActor>(customerId.Value)
: null;
}
}
Ich möchte wissen, ob es einen Weg gibt, diese Art von Interaktion zu testen. Wir verwenden die Bibliothek ServiceFabric.Mocks, um das Gerüst einzurichten, das benötigt wird, um Akteure außerhalb eines laufenden Dienstes zu erstellen, aber wenn es die ActorProxy.Create<ICustomerActor>(customerId.Value)
Zeile erreicht, löst es eine Ausnahme aus, weil nichts wirklich wie ein echter Dienst zusammengebunden ist.
Ich dachte daran, aber hoffte auf eine bessere Lösung. :) Ich wünschte nur, es gäbe eine Möglichkeit, die normale 'ActorProxy.Create' Methode zu" reparieren ". – moswald
Um klar zu sein, das ist kein schlechter Weg, es zu tun, aber die ganze Dokumentation sagt "um eine Akteurreferenz zu erhalten, rufen Sie' ActorProxy.Create' auf. Das würde das ändern und jetzt gibt es zwei Möglichkeiten, dasselbe zu tun. Ich ärgere mich immer, wenn Bibliotheksautoren nicht darüber nachdenken, wie sich ihre statischen und/oder Erweiterungsmethoden auf Anwendungsautoren auswirken, die Tests schreiben müssen. :/ – moswald
Ich bevorzuge diesen Ansatz, aber es gibt auch Shims aus dem Rahmen von Fakes. – LoekD