starałem się wykonać weryfikację kolejnych wywołań i stwierdziliśmy, że MOQ obsługuje metodę InSequence() dla tego, jak:Czy mogę użyć moq InSequence() z MockBehavior.Loose?
MockSequence s = new MockSequence();
validator.InSequence(s).Setup(m => m.IsValid(It.IsAny<Frame>())).Returns(true);
encryptor.InSequence(s).Setup(m=>m.Encrypt(It.IsAny<Frame>()));
socket.InSequence(s).Setup(m => m.Send(It.IsAny<Frame>()));
compressor.InSequence(s).Setup(m => m.Compress(It.IsAny<Frame>()));
to jednak wydaje się działać tylko wtedy, gdy określić mock zachowanie jako „surowe” , co zabrania mi wywoływać dodatkowe mehody na wyśmianych przedmiotach. Chciałbym jednak móc wywoływać inne metody na tych obiektach, po prostu chcę, aby te wywołania były wykonywane kolejno.
Czy istnieje jakiś "obsługiwany" sposób na to (zamiast uciekania się do .Callback() i realizacji ręcznie)? Znalazłem dodatkową bibliotekę o nazwie moq.sequence, jednak wersja skompilowana nie działa z najnowszym Moq.
Czy umieściłeś to wszystko na stronie ** Problemów Moq **? Trzeba było zbadać ten temat, więc zakładam, że nie zostało to wyjaśnione w dokumentacji, więc mogą nie być świadomi tego problemu. Mogę was zapewnić, że zapoznają się z zamieszczonymi tam problemami/sugestiami. To zajmuje trochę czasu, ale robią. Sam wysłałem kilka użytecznych łatek (drwiących delegatów, hrabiów itp.). Jeśli nie chcesz się angażować, mogę dwukrotnie sprawdzić problem i zarejestrować go, ale myślę, że jak już znasz szczegóły, opisałbyś to znacznie lepiej :) [btw. sorki, nie chciałem mieszać na SO :)] – quetzalcoatl
Witam, quetzalcoatl. Nie wiedziałem, że Moq jest rzeczywiście utrzymywany, istnieją co najmniej dwa lub trzy repozytoria kodu źródłowego dla Moq. Czy to jest obecnie: https://github.com/Moq/moq4? Będę miał kilka dni wakacji przed świętami Bożego Narodzenia i przed nowym rokiem, więc może spróbuję coś złożyć lub przynajmniej zbadać dalej. –
Tak, rzeczywiście, obecny jest na GitHub. Poprzednio Moq był hostowany na code.google, ale ostatnio został przeniesiony do GitHub. Lista problemów widoczna na GitHubie jest najnowsza i należy tam zgłaszać nowe problemy. Witryna code.google nadal istnieje i nie została usunięta/usunięta/itp. Ze względu na liczbę zgłoszonych "starych" problemów i żądań funkcji.Nie zostały przeniesione do GitHub, IIRC, ponieważ nie było sposobu na ich importowanie i nikt naprawdę nie chciał kopiować - wklejać je ręcznie! Nadal są brane pod uwagę, ale myślę, że problemy z GitHub mają naturalny "priorytet" w stosunku do starego code.google. – quetzalcoatl