Siema
Testuję jedną z metod która wyrzuca ArgumentNullException z nazwą parametru „source”. Debugując metodę testu jednostkowego dochodze po Call Stacku do metody statycznej PluginFinder.EnsurePluginsAreLoaded()
Exception powoduje właściwość ReferencedPlugins, która jest null (chyba że źle rozumiem „jest zerowa” dla typu referencyjnego?)
Oto winowajca
Właściwość PluginManager.ReferencedPlugins jest tylko w jednym miejscu inicjalizowana, w metodzie statycznej Initialize() (bezparametrowej). Wewnątrz metody Initialize() jest jedna duża pętla z wieloma warunkami, ale zakładam że działa ona ok, więc dochodze do linijki w której do tymczasowego obiektu (typu List<PluginDescriptor>) dodawane są (Add()) kolejne obiekty
Później do Własciwości przypisywany jest ten obiekt.
Problem w tym, że przy wywołaniu metody .ToList() wywala Exceptiona – metoda ta stwierdza, że przesłany argument („source”) jest null (?). Rozumiem, że nie chodzi o to, czy są jakieś obiekty – może ich nie być, tylko że referencja nie ma przypisanego obiektu (referencedPlugins = new List<PluginDescriptor>();)
Ergo dochodzę do wniosku, że metoda statyczna Initialize() nie jest w ogóle wywoływana.
Tutaj wpadam na głupi pomysł wywołania tej metody w TestInitialize() (taka metoda testów jednostkowych, która odpala się przed wszystkimi innymi UnitTest’ami)
Co tylko powoduje wywalenie innego Exceptiona, co jak rozumiem, jest głupim sposobem i drogą donikąd.
Będę wdzięczny za nakierowanie gdzie szukać lub bezpośrednią odpowiedź co jest źle (projekt jest napisany w ASP.NET MVC, chyba jedna z nowszych wersji).
Podobno projekt działa jak najbardziej ok (pomijając testy – które piszę w ramach zapoznania się z projektem). Do tworzenia Mocków używam Moq (chociaż RhinoMock tez daje radę).