По запросу Лэнгдона, само решение, которое я использовал:
//Moling test Certificate
var cert = new MX509Certificate2();
var subject = new MX500DistinguishedName();
// hookup
cert.SubjectNameGet = () => subject;
cert.ThumbprintGet = () => "foo";
subject.NameGet = () => "foobar";
Это сработало, потому что единственными полями, к которым я обращался в сертификате, были его SubjectName и Thumbprint, а единственным полем SubjectName, к которому я обращался, было имя. Я «смоделировал» методы getter для этих полей, чтобы они возвращали фиктивные строки. Если бы вам нужно было получить доступ к другим полям, вам, вероятно, нужно было бы приставить их к.
Итак, что такое "родинки"?
"Кроты - это облегченная среда для тестовых заглушек и обходов в .NET, основанная на делегатах. Кроты могут использоваться для обхода любого метода .NET, включая не виртуальные / статические методы в закрытых типах. Кроты свободно доступны Галерея Visual Studio или в комплекте с Pex. "
http://research.microsoft.com/en-us/projects/moles/