I am using xUnit and Moq for writing unit tests.
My ExcelData class has below code
       public DataTable ReadFromExcel(CloudBlockBlob MasterDataSourceBlob, string SheetName)
        {
            DataTable dataInExcelSheet = new DataTable();
            using (var memoryStream = new MemoryStream())
            {
                MasterDataSourceBlob.DownloadToStreamAsync(memoryStream);
                var headers = new List<string>();
               IExcelDataReader excelReader = ExcelReaderFactory.CreateReader(memoryStream);
          }
Inorder to mock ExcelReaderFactory.CreateReader() , I created new class and Interface as below and returned IExcelDataReader .
ExcelDataMock.cs file has below code
   public  class ExcelDataMock
    {
        public IExcelDataReader CreateReader(MemoryStream memoryStream)
        {
           return ExcelReaderFactory.CreateReader(memoryStream); 
        }
    }
IExcelDataMock.cs file has below code
   public interface IExcelDataMock
    {
        IExcelDataReader CreateReader(MemoryStream memoryStream);
    }
My Test class has below code
      [Fact]
        public void ReadFromExcel_Success()
        {
            var stream = new MemoryStream();
            var writer = new StreamWriter(stream);
            writer.Write("sample data");
            writer.Flush();
            stream.Position = 0;
            var mockExcelDataMock = new Mock<IExcelDataMock>();
            mockExcelDataMock.Setup(data => data.CreateReader(It.IsAny<MemoryStream>())).Returns<IExcelDataReader>(
                excel =>
            {
                var item = new Mock<IExcelDataReader>();
                return item.Object;
            }
            );
            var mockCloudBlockBlob = new Mock<CloudBlockBlob>(new Uri("https://samplestorage.blob.core.windows.net/samplecontainer"));
            mockCloudBlockBlob.Setup(blob => blob.DownloadToStreamAsync(It.IsAny<Stream>()))
                .Callback((Stream target) => stream.CopyTo(target)) 
                .Returns(Task.CompletedTask);
            string SheetName = null;
            this._iExcelOperations = new ExcelData(mockExcelDataMock.Object);
            this._iExcelOperations.ReadFromExcel(mockCloudBlockBlob.Object, SheetName);
        }
If I use ExcelReaderFactory.CreateReader(memoryStream) I got below error
No data is available for encoding 1252. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.'
If I use this._iExcelOperationsMock.CreateReader(memoryStream) I got error as below
System.ArgumentException: 'Object of type 'System.IO.MemoryStream' cannot be converted to type 'ExcelDataReader.IExcelDataReader'.'
How to resolve this issue.
Update 1:
Error:
invalid file signature



