不为.NET方法生成填充程序

Dav*_*d J 14 .net c# moles microsoft-fakes

当我开始使用Microsoft Fakes时,我很高兴开始填补一些.NET方法.我一直相信我能够使用任何.NET方法,静态或不是:http://msdn.microsoft.com/en-us/library/hh549176.aspx.

但是,我一直试图在TcpClient中填充一些方法,只创建了存根,这对我没有好处,因为我希望能够改变一些方法来返回我自己的数据,而不是依赖于直播TcpClient给我数据.

如果还有其他超越Microsoft Fakes的方法,我愿意接受有关如何执行此操作的任何建议.

编辑:添加代码来演示问题

[TestMethod]
public void CommunicationTest()
{
    var stubbedTcpClient = new System.Net.Sockets.Fakes.StubTcpClient
    {

    };

    //No such ShimTcpClient exists
    var shimmedTcpClient = new System.Net.Sockets.Fakes.ShimTcpClient
    {

    };
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*d J 10

得到了这个博客文章这里的帮助.

解决方案是在System.fakes文件中添加我想要显式填充的类.这就是我现在的样子:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="System" Version="4.0.0.0"/>
  <ShimGeneration>
    <Clear/>
    <Add FullName="System.Net.Sockets.TcpClient"/>
    <Remove Obsolete="1"/>
  </ShimGeneration>
</Fakes>
Run Code Online (Sandbox Code Playgroud)

Remove Obsolete="1"是为了阻止Shim生成代码在尝试填充[Obsolete]代码时抛出错误.