【问题标题】:Visual Studio 2012 Fakes not generating a stub for an interface that has a method with Stream return typeVisual Studio 2012 Fakes 不会为具有 Stream 返回类型的方法的接口生成存根
【发布时间】:2012-08-13 09:06:57
【问题描述】:

使用 Visual Studio 2012 生成带有“Add Fakes Assembly”的存根,一切都按预期工作,除了无法为此接口生成存根:

public interface IFileWrapper
{
    IEnumerable<string> ReadLines(string path);
    bool Exists(string path);
    Stream OpenReadStream(string path);
}

当我将 Stream 更改为 FileStream 时(因为 Stream 是一个抽象类,我想检查这是否只发生在抽象类中),我仍然无法生成。 当我完全删除方法签名(即删除Stream OpenReadStream(string path);)时,我能够生成存根。

这是我的 .fake 文件内容:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true" Verbosity="Noisy">
  <Assembly Name="System.IO.Abstractions"/>
  <StubGeneration>
    <Clear />
    <Add AbstractClasses="true"/>
    <Add Interfaces="true"/>
  </StubGeneration>
  <ShimGeneration>
    <Clear />
  </ShimGeneration>
</Fakes>
  1. 知道为什么会发生这种情况,我该如何避免?
  2. 应该有一个 Visual Studio 输出面板,其中将显示 Fake 生成结果。我看不到任何东西,它们也没有显示在常规构建面板中。我可以在哪里找到它的任何想法?我搜索了所有 VS 2012 菜单。

【问题讨论】:

标签: visual-studio-2012 moles stub stubbing microsoft-fakes


【解决方案1】:

这是由于 Fakes 当前实施的限制造成的。您可以通过将单元测试项目中的目标框架从 4.0 切换到 4.5 来解决此问题。

【讨论】:

  • 我可以在 .NET 4.5.2 和 VS 2013 (2015) 中确认这个问题
猜你喜欢
  • 1970-01-01
  • 2016-03-15
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多