【发布时间】:2016-09-30 00:32:05
【问题描述】:
我需要让我的 X509Certificate2.Subject 为单元测试中的代码覆盖率返回乱码。我尝试过使用 Moq,但它失败了,因为 Subject 不是虚拟方法。有没有办法做到这一点,还是我必须在这里重新发明轮子?
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);
起订量可以做到这一点吗?如果没有,是否还有其他图书馆可以为我工作?谢谢。
【问题讨论】:
-
错误是:System.NotSupportedException:非虚拟(在 VB 中可覆盖)成员上的设置无效:m => m.Subject
-
对于属性使用 Stub or SetupProperty 而不是设置
-
你看到this question的答案了吗?他们提到了一种叫做 Moles 的东西,它可能会对你有所帮助。要么创建测试证书,要么创建测试证书,因为您尝试执行的操作似乎无法完成,因为正如您所说,
Subject属性是非虚拟的。 -
stub在mock框架中不存在,setupProperty也有同样的问题。
标签: c# visual-studio-2010 c#-4.0 mocking moq