Właśnie rozpocząłem wdrażanie testów jednostkowych (przy użyciu xUnit i Moq) w ramach ustalonego już projektu. Projekt szeroko wykorzystuje zastrzyk zależności poprzez pojemnik jedności.Moq i dostęp do wywoływanych parametrów
Mam dwie usługi A i B. Usługa A jest testowana w tym przypadku. Usługa A wywołuje B i przekazuje mu delegata do funkcji wewnętrznej. To "oddzwanianie" jest używane do powiadamiania A, gdy wiadomość została odebrana, którą musi obsłużyć.
Stąd też połączenia (w którym B jest przykładem usług B)
b.RegisterHandler(Guid id, Action<byte[]> messageHandler);
W celu przetestowania roboczego A, to musi być w stanie wywołać messageHandler
, ponieważ tylko w ten sposób, że obecnie przyjmuje wiadomości.
Czy można to zrobić za pomocą Moq? to znaczy. Czy mogę kpić z usługi B tak, że po wywołaniu RegisterHandler
wartość messageHandler
jest przekazywana do mojego testu?
Czy muszę przeprojektować to? Czy są jakieś wzorce projektowe, których powinienem używać w tym przypadku? Czy ktokolwiek wie o dobrych zasobach tego typu konstrukcji?