Nie mogę przetestować niezawodnej usługi/aktora, po prostu wywołując jego konstruktor, a następnie przetestować jego metody. var testService = new SomeService();
zgłasza wyjątek NullReferenceException. Więc co mogę zrobić z wdrożoną usługą?Testowanie jednostki usługowej i iniekcja zależności
Rozumiem, że wdrożone SF Reliable Services/Actors nie są standardowymi klasami .NET, a testowanie jednostkowe wdrożonego S/A może być dziwnym pomysłem.
W każdym razie teraz próbuję spróbować.
Na przykład. Właśnie wdrożyłem usługę, niż w teście, w którym utworzyłem obiekt Proxy i dodałem element do kolejki wejściowej Usługi. Następnie muszę potwierdzić, że licznik kolejki wejściowej = 1. Działa to, gdy właśnie wdrożyłem Usługę i żaden inny Klient/Usługi/Aktorzy nie użyli jej kolejki wejściowej. Ale następnym razem ten test się nie powiedzie, to jest problem. Muszę sprawić, aby Usługa przestała działać z innymi klientami, odrzucić kolejkę i przetestować ją. W tym celu mogę utworzyć właściwość TestMode i niektóre metody, takie jak PropareoForTests/TestingCompleted i wywołać je z klienta testowego przed i po testowaniu.
Czy to jest zły pomysł, aby to zrobić w ten sposób. Może są jakieś wytyczne dotyczące testowania jednostkowego SF? Dzięki.
UPDATE:
Badając Service Fabric Web Reference Application example Znalazłem ten ciąg TODO:
/// TODO: Temporary property-injection for an IServiceProxyWrapper until constructor injection is available.
to znaczy, że SF Usługi poprawi To wsparcie DI? A co z aktorami?
Zastrzyk zależności od konstruktorów jest obecnie dostępny w aktorze! Kiedy rejestrujesz swój typ aktora, możesz także zarejestrować "fabrykę", która jest w rzeczywistości Func <>, gdzie tworzysz instancję klasy Aktor, która daje ci kontrolę nad instancją Aktora, dzięki czemu możesz tam wstrzykiwać zależności. W usługach możesz już to zrobić, sprawdź, jak to robimy w przykładowym klastrze Party: https://github.com/Azure-Samples/service-fabric-dotnet-management-party-cluster/tree/master/PartyCluster/ ClusterService –
Napisałem odpowiedź na temat wykonywania wtyczki zależności z jednością: http://stackoverflow.com/questions/30384780/azure-service-fabric-actor-dependency-injection/35900027#35900027 –
@VaclavTurecek Twój link jest zepsuty – Dismissile