Как 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 (который вызывает OpenRead), я получаю исключение, говорящее о том, что файл не может быть найден. Я неправильно понимаю, что делает nmock? Я не хочу, чтобы мой модульный тест попал в настоящую файловую систему...
1 ответ
Да, я думаю, вы неправильно понимаете, что делает NMock. Он используется для создания объектов, которые вы передаете в тестируемый объект, чтобы они воздействовали на эти фиктивные объекты. Похоже, что ваши новости "productionCodeObj" FileStream
сам экземпляр, так что он не будет использовать ваш макет. Вы должны были бы пройти file
внутрь.