Deridere e risolvere la dipendenza Autofac nel test di integrazione in AspNetCore con TestServer

Deridere e risolvere la dipendenza Autofac nel test di integrazione in AspNetCore con TestServer

Registra l'implementazione simulata con il generatore di contenitori per il test utilizzando ConfigureTestContainer

//...
.ConfigureServices(services => services.AddAutofac())
.ConfigureTestContainer<ContainerBuilder>(builder => {
    builder.RegisterType<MockEventStoreManager>().As<IEventStoreManager>();
})
//...

Questo dovrebbe evitare di ottenere l'effettiva implementazione aggiunta da Startup.ConfigureContainer come

ConfigureTestContainer viene invocato dopo il Startup.ConfigureContainer quindi l'ultima registrazione con il mock sarebbe il provider predefinito del servizio.


Aggiungendo all'eccellente risposta di Nkosi, vorrei menzionare che ConfigureTestContainer non funziona con l'host generico consigliato sull'host Web da Microsoft a partire da .NET Core 3.0. C'è tuttavia una soluzione alternativa proposta da Alistair Evans del team Autofac. Sfortunatamente, si basa sul deprecato IStartupConfigureContainerFilter che è stato rimosso in .NET 5.0.

Ciò significa che attualmente in .NET 5.0 non è possibile simulare le dipendenze inserite da un contenitore DI esterno nei test di integrazione quando si utilizza l'host generico.

Fortunatamente, David Fowler del team ASP.NET sta esaminando il problema.