c# - 不会为 .NET 方法生成垫片

标签 c# .net moles microsoft-fakes

当我开始使用 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/

相关文章:

.net - Moles 与其他隔离框架(例如 Moq、RhinoMocks 等)有何不同

c# - WPF 应用程序不响应 WM_CLOSE

c# - 从 C# 获取 CPU ID 代码到 C++

c# - 实时捕获用户输入错误

c# - Path.Combine 和点符号

c# - future C# 中的单元测试调度程序

visual-studio-2012 - 在 Visual Studio 2012 中使用 Microsoft Moles

c# - WPF - 如何保存没有任何 alpha channel 的 PNG?

c# - DataTable 不支持从 Xml 进行架构推断。?

c# - 调用存储过程