当我开始使用 Microsoft Fakes 时,我很高兴开始使用一些 .NET 方法。我被引导相信我将能够填充任何 .NET 方法,静态与否:http://msdn.microsoft.com/en-us/library/hh549176.aspx .
但是,我一直在尝试填充 TcpClient 中的一些方法,并且只创建了 stub ,这对我没有好处,因为我希望能够更改一些方法以返回我自己的数据,而不是依赖于在实时 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
{
};
}
最佳答案
在 this blog post 的帮助下得到它的工作和 here .
解决方案是在 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>
Remove Obsolete="1"
是为了阻止 Shim 生成代码在尝试填充 [Obsolete] 代码时抛出错误。
关于c# - 不会为 .NET 方法生成垫片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16154182/