【问题标题】:How to use Moq to mock X509Certificate2?如何使用 Moq 模拟 X509Certificate2?
【发布时间】: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


【解决方案1】:

实际上是做不到的。我已经从 Moq 搬走了,现在又开始使用访问器了。

【讨论】:

    猜你喜欢
    • 2012-03-18
    • 2010-10-19
    • 2019-10-06
    • 1970-01-01
    • 2020-10-27
    • 2012-06-01
    • 2018-12-27
    • 2019-06-16
    • 2012-07-22
    相关资源
    最近更新 更多