【问题标题】:Why doesn't Microsoft Fakes create ShimFtpWebRequest?为什么 Microsoft Fakes 不创建 ShimFtpWebRequest?
【发布时间】:2014-11-13 16:48:49
【问题描述】:

执行以下步骤:

  • 创建默认 WCF 服务库项目
  • 创建默认单元测试项目并引用服务库
  • 在单元测试项目中为 System 创建 Fakes 程序集

我期待在 System.4.0.0.0.Fakes 中有一个类型 ShimFtpWebRequest。那没有。在 System.Net.Fakes 上将 Diagnostics 属性设置为 true 会发出大量警告消息,主要是关于无法生成 stubs,包括 FtpWebRequest - 因为这些类是密封的,是枚举,并且很快。我对此没意见,我不在乎存根,我想要的是垫片。没有消息说它无法生成 shim 类型。

This question 建议在某些情况下生成它,因为 OP 使用它,但他没有提及他是如何生成它的,因为它不是问题的主题。

Fake 为什么不生成ShimFtpWebRequest 类型?

【问题讨论】:

  • 您提供的链接是关于 FtpWebResponse 而不是 FtpWebRequest。无论如何,您为什么要对请求进行填充?这对我来说似乎有点奇怪。
  • @EtienneMaheu 我在问题中承认了这一点,但链接的问题 提及 FtpWebRequest shim。这表明,只要设置正确,就可以生成一个。我不明白你的问题——我想对请求进行填充,因为真正的 FtpWebRequest 的行为不属于单元测试;与所有垫片的用途相同。

标签: c# unit-testing microsoft-fakes


【解决方案1】:

您需要编辑生成的System.fakes 文件以告诉它生成类。我相信它会自动忽略密封类。

我在测试时遇到了和你一样的问题,但后来我手动告诉它生成它。

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
    <Assembly Name="System" Version="4.0.0.0"/>
    <ShimGeneration>
        <Add FullName="System.Net.FtpWebRequest"/>
    </ShimGeneration>
</Fakes>

【讨论】:

  • 我最终还是独立地找到了这个解决方案,在第一次尝试时说服自己它不起作用 - 我不确定我做错了什么,但花了第二次去做这个去。这是正确的答案。
猜你喜欢
  • 1970-01-01
  • 2012-09-03
  • 2014-01-08
  • 2023-04-03
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多