Non riesco a testare un servizio/attore affidabile semplicemente chiamando il suo costruttore e testando i suoi metodi. var testService = new SomeService();
genera una eccezione NullReferenceException. Quindi, cosa posso fare con il servizio distribuito.Service Fabric Injection Testing and Dependency Injection
Capisco che gli SF Reliable Services/Actors implementati non siano classi .NET standard, e il test di unità di S/A schierato potrebbe essere una strana idea.
Ad ogni modo sto provando a fare un tentativo.
Ad esempio. Ho appena distribuito un servizio, che nel test ho creato un oggetto Proxy e aggiunto elementi nella coda di input del servizio. Quindi devo affermare che il conteggio della coda di input = 1. E funziona se ho appena distribuito un servizio e nessun altro client/servizio/attore ha utilizzato la coda di input. Ma la prossima volta che questo test fallirà questo è il problema. Ho bisogno di fare in modo che il Servizio smetta di funzionare con altri utenti, di rilasciarlo e di testarlo. A tale scopo posso creare alcune proprietà TestMode e alcuni metodi come PropareoForTests/TestingCompleted e chiamarli dal client di test prima e dopo il test.
È una cattiva idea farlo in quel modo. Forse ci sono delle linee guida per i test unitari di SF? Grazie.
UPDATE:
Mentre indaga Service Fabric Web Reference Application example ho trovato questa stringa TODO:
/// TODO: Temporary property-injection for an IServiceProxyWrapper until constructor injection is available.
Vuol dire che SF servizi migliorerà sia il supporto DI? E gli attori?
L'iniezione della dipendenza del costruttore è attualmente disponibile negli attori! Quando registri il tuo tipo di attore, puoi anche registrare un "factory" che in realtà è solo un Func <> dove crei la tua istanza della classe Actor, che ti dà il controllo sull'istanza del tuo attore in modo da poter iniettare le dipendenze da lì. Nei servizi puoi già farlo, guarda come lo facciamo nell'esempio del Cluster di partito: https://github.com/Azure-Samples/service-fabric-dotnet-management-party-cluster/tree/master/PartyCluster/ ClusterService –
Ho scritto una risposta sull'iniezione di dipendenza con unità: http://stackoverflow.com/questions/30384780/azure-service-fabric-actor-dependency-injection/35900027#35900027 –
@VaclavTurecek il tuo link è rotto – Dismissile