2016-05-31 100 views
1

我需要让我的X509Certificate2.Subject在单元测试中返回代码覆盖率的乱码。我试过使用Moq,但它失败了,因为Subject不是一个虚拟方法。有没有办法做到这一点,还是我必须在这里重新发明轮子?如何使用Moq来模拟X509Certificate2?

  Mock<X509Certificate2> mockCert = new Mock<X509Certificate2>(contextAccessor.Certificate.RawData); 
     mockCert.Setup(m=>m.Subject).Returns("kjewnr,mwnzlxkcuvlkrj,wmelq"); 
     mockCert.CallBase = true; 

     contextAccessor.Certificate = mockCert.Object; 
     authenticatorAccessor.LogAuthentication(context); 

Can Moq能做到这一点吗?如果没有,是否还有其他图书馆可以帮我工作?谢谢。

+0

错误是:System.NotSupportedException:在非虚拟(VB中可重写)成员上设置无效:m => m.Subject – ChopperCharles

+0

对于属性,请使用[Stub或SetupProperty](http://www.nudoq.org/) #!/ Packages/Moq/Moq/Mock(T)/ M/SetupProperty(TProperty))而不是设置 – stuartd

+0

你见过[这个问题]的答案(http://stackoverflow.com/questions/6836247/how-以创建-A-最小的假人,x509certificate2)?他们提到了一些叫做鼹鼠的东西,可以帮助你。要么就是要么创建一个测试证书,因为看起来你正在尝试做的事情不能完成,因为'Subject'属性是非虚拟的,就像你说的那样。 – Charlie

回答

0

它实际上无法完成。我已经离开了Moq,然后回去使用访问器。

相关问题