我的单元测试中有以下代码:
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的功能。它用于创建要传递到被测对象中的对象,以便它们对那些模拟对象起作用。看来您的“ productionCodeObj”新闻本身就是一个FileStream
实例,因此它不会使用您的模拟。您必须将file
传递给它。
关于c# - 如何NMock FileStream?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11165418/