【发布时间】:2013-04-15 18:32:16
【问题描述】:
当我开始使用 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
{
};
}
【问题讨论】:
-
你能分享你的代码吗?或者至少足以证明问题?
-
我添加了我希望生成的 TcpClient shim 代码
-
你想用什么方法来填充?如果它是虚拟的,你可以使用NSubstitute,如果不是,你会被Fakes 卡住。
-
Available 和 Connected 属性以及 GetStream。我会给 NSubstitute 一个机会,看看会发生什么。我仍然想得到一个充分的理由,说明为什么我似乎无法让任何 .NET 类生成除 DateTime 之外的 shim 版本。
-
如果方法不是虚拟的或接口(GetStream() 两者都不是),您将无法使用 NSubstitute。
标签: c# .net moles microsoft-fakes