Moles은 Microsoft에서 만든 격리 프레임 워크입니다. Moles의 멋진 기능은 정적/비 가상 메서드 및 밀폐 된 클래스를 모의 할 수 있다는 것입니다 (Moq와 같은 프레임 워크에서는 불가능 함). 다음은 두더지가 할 수있는 일의 빠른 데모입니다 두더지 런타임에 DateTime.Now
같은 것들의 CIL 본문을 수정할 수처럼 Moles Isolation 프레임 워크가 구현되는 방법은 무엇입니까?
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);
보인다. Moles는 오픈 소스가 아니기 때문에 런타임에 메소드의 CIL을 수정하기 위해 Moles가 사용하는 메커니즘을 알고 싶습니다. 누구든지 어떤 빛을 비춰 줄 수 있습니까?
Pex와 Moles의 작동 방식을 설명하는 @Peli의 3 가지 동영상을 시청하는 것이 좋습니다. 걔네들은 엄청 좋아요! [비디오 파트 1] (http://channel9.msdn.com/Blogs/channel9spain/Microsoft-PEXMOLES--advanced-Unit-Testing-aspects-13 "Microsoft PEX/MOLES 및 고급 단위 테스트 측면 1/3") ; [비디오 파트 2] (http://channel9.msdn.com/Blogs/channel9spain/Microsoft-PEXMOLES--advanced-Unit-Testing-aspects-23 "Microsoft PEX/MOLES 및 고급 유닛 테스트 측면 2/3") ; [비디오 파트 3] (http://channel9.msdn.com/Blogs/channel9spain/Microsoft-PEXMOLES--advanced-Unit-Testing-aspects-33 "Microsoft PEX/MOLES 3/3") –