2016-05-31 175 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,然後回去使用訪問器。

相關問題