Я заметил, что возвращение MemoryStream сбрасывает его позицию до «последней» позиции. Почему?
Когда я тестировал это в рабочем методе, перед возвратом я явно установил позицию на 0
myStream.position = 0; // I allso tried myStream.Seek(0, SeekOrigin.Begin);
Но при проверке позиции в обоих случаях позиция не была установлена до 0.
Edit (думал, что это более теоретический вопрос, поэтому я не стал добавлять весь код, но здесь)
public MemoryStream GenerateOpenXmlFileAsStrem()
{
DataTable table = new DataTable();
MemoryStream memoryStream = new MemoryStream();
using SpreadsheetDocument document = SpreadsheetDocument.Create(memoryStream, SpreadsheetDocumentType.Workbook);
// Here the data gets inserted into the DataTable
workbookPart.Workbook.Save();
memoryStream.Position = 0;
return memoryStream;
}
А затем я попытался протестировать метод
[Test]
public Task GenerateOpenXmlFileAsStremTest()
{
using (Context context = new Context (_options))
{
context.Database.EnsureCreated();
}
using (Context context = new Context (_options))
{
_target = new Service(_mapper, _mockedLogger.Object, _dbContext, _mockedNotificationService.Object);
MemoryStream result = _target.GenerateOpenXmlFileAsStrem();
Assert.NotNull(result);
Assert.Equal(0, result.Position); // somehow this is not true
}
}