Moles to framework izolacyjny stworzony przez firmę Microsoft. Fajną cechą Moles jest to, że potrafi "kpić" z metod statycznych/nie-wirtualnych i klas zapieczętowanych (co nie jest możliwe w przypadku frameworków takich jak Moq). Poniżej jest szybkie demonstracja tego, co może zrobić Moles:W jaki sposób zaimplementowano strukturę izolacji Moles?
Assert.AreNotEqual(new DateTime(2012, 1, 1), DateTime.Now);
// MDateTime is part of Moles; the below will "override" DateTime.Now's behavior
MDateTime.NowGet =() => new DateTime(2012, 1, 1);
Assert.AreEqual(new DateTime(2012, 1, 1), DateTime.Now);
Wygląda Moli jest w stanie zmodyfikować ciało CIL rzeczy jak DateTime.Now
przy starcie. Ponieważ Moles nie jest open-source, jestem ciekawy, który mechanizm Moles używa, aby zmodyfikować CIL metod w środowisku wykonawczym. Czy ktoś może rzucić jakiekolwiek światło?
Gorąco polecam oglądanie tych 3 filmów @Peli wyjaśniających, jak działają Pex i Moles. Oni są bardzo dobrzy! [Część wideo 1] (http://channel9.msdn.com/Blogs/channel9spain/Microsoft-PEXMOLES--advanced-Unit-Testing-aspects-13 "Microsoft PEX/MOLES i zaawansowane aspekty testowania jednostek 1/3") ; [Część wideo 2] (http://channel9.msdn.com/Blogs/channel9spain/Microsoft-PEXMOLES--advanced-Unit-Testing-aspects-23 "Microsoft PEX/MOLES i aspekty zaawansowanych testów jednostkowych 2/3") ; [Część wideo 3] (http://channel9.msdn.com/Blogs/channel9spain/Microsoft-PEXMOLES--advanced-Unit-Testing-aspects-33 "Microsoft PEX/MOLES 3/3") –