Molesは、Microsoft によって作成された分離フレームワークです。Moles の優れた機能は、静的/非仮想メソッドとシールされたクラスを「モック」できることです (これは Moq のようなフレームワークでは不可能です)。以下は、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);
DateTime.Now
Moles は実行時に CIL 本体を変更できるようです。Moles はオープンソースではないので、実行時にメソッドの CIL を変更するために Moles がどのメカニズムを使用しているか知りたいです。誰でも光を当てることができますか?