c# - 如何NMock FileStream?

标签 c# unit-testing nmock2

我的单元测试中有以下代码:

var file = m_Mockery.NewMock<IFile>();
Stream s = new MemoryStream();

Expect.Once.On( file ).Method( "OpenRead" )
.With( "someFile.mdb")
.Will( Return.Value( s ) );
...
...
...

// this runs the real code that contains the OpenRead call
productionCodeObj.DoIt("someFile.mdb");
m_Mockery.VerifyAllExpectationsHaveBeenMet();

问题是当我调用 DoIt(它调用 OpenRead)时,出现异常,提示找不到文件。我是否误解了 nmock 的作用?我不希望我的单元测试到达真实的文件系统......

最佳答案

是的,我认为你误解了 NMock 的作用。它用于创建传递给被测对象的对象,以便它们对这些模拟对象起作用。因为看起来您的“productCodeObj”消息本身是一个 FileStream 实例,所以它不会使用您的模拟。您必须将 file 传递给它。

关于c# - 如何NMock FileStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11165418/

相关文章:

.net - 如何对读取 xml 文件的类进行单元测试?

c# - 带有 ssl 的 asp.net 表单 - 拒绝访问日志文件

c# - 尝试发布 SQL CLR 数据库的日期时间类型不匹配

c# - MVC 3 显示用户特定数据

c# - 将 WebClient 与 socks 代理一起使用

asp.net - 如何在 ASP.NET webforms 中应用单元测试

c# - 如何强制 MSTEST TestMethod 在运行前重置所有单例/静态?

.net - 使用 Thread.Sleep 对时间间隔操作进行单元测试是否不好?