2012-06-22 31 views
2

我在我的单元测试此代码:如何NMock FileStream?

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(它调用打开读取),我得到一个异常说文件不能被发现。我误解了nmock的作用吗?我不希望我的单元测试打到真正的文件系统...

回答

2

是的,我认为你误解了NMock的作用。它用于创建传递到被测对象中的对象,以便它们对这些模拟对象起作用。由于看起来你的“productionCodeObj”报道了一个FileStream实例本身,所以它不会使用你的模拟。你将不得不通过file进去。