Classes de teste de unidade que usam EPPlus

Estou tendo problemas com as classes de teste de unidade que usam o EPPlus. Na minha cabeça, eu tenho duas opções.

Posso simular e injetar o HttpPostedFileBase em um método ou posso simular e injetar a classe EPPlus ExcelPackage.

Zombar do HttpPostedFileBase, pelo menos zombando de verdade, parece limitado. Posso zombar das propriedades básicas do arquivo (tipo MIME, nome do arquivo etc.), mas zombar de seu InputStream de uma maneira que permita que os testes realmente interajam com ele, parece extremamente difícil. A única solução que posso encontrar é fornecer um arquivo excel real, criar um FileStream real com ele e atribuir esse FileStream ao InputStream do meu falso HttpPostedFileBase. Mas, tecnicamente, é um teste de integração, não um teste de unidade.

const string FakeFileName = "TestExcelFile.xlsx"; // path to an actual excel file
var fileStream = new FileStream(FilePath, FileMode.Open);
var fakeFile = A.Fake<HttpPostedFileBase>();
A.CallTo(() => fakeFile.InputStream).Returns(fileStream);



Imaginei que, se quisesse fazer um teste de unidade real, poderia simular e injetar a classe EPPlus ExcelPackage. Eu poderia zombar das classes Planilha, Colunas e Células relacionadas, definindo suas propriedades dinamicamente para se ajustarem às condições do meu teste, sem nunca tocar em um arquivo real. O problema é que a maioria das classes EPPlus é selada, então não posso zombar delas com o FakeItEasy. Tentei criar classes de wrapper para elas (veja abaixo), para que eu pudesse zombar da classe de wrapper ... mas algumas das classes que eu preciso zombar / quebrar têm construtores internos, por isso não posso instancia-las. (Tentei contornar o problema interno do construtor usando alguns hacks feios, mas não obtive sucesso.) E, por isso, me deparei com essa opção.

Ainda sou novato e tenho muito a aprender. Talvez meu conceito de classe de wrapper esteja incorreto e eu esteja fazendo errado. Existe uma maneira de contornar isso que não consigo ver, ou devo desistir, usar um arquivo excel real e chamá-lo de teste de integração? Até agora, é para isso que estou me inclinando.

public class ExcelWorksheetsWrapper : IEnumerable<ExcelWorksheet>
{
    public readonly ExcelWorksheets _excelWorksheets;

    public ExcelWorksheetsWrapper()
    {
        // internal constructor, can't instantiate
        _excelWorksheets = new ExcelWorksheets();       
    }

    public ExcelWorksheet Add(string worksheetName)
    {
        return _excelWorksheets.Add(worksheetName);
    }

    public IEnumerator<ExcelWorksheet> GetEnumerator()
    {
        return _excelWorksheets.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return _excelWorksheets.GetEnumerator();
    }
}