Ho un lavoro in cui ho un DbContext IDisposable. Vorrei testare l'unità di questo lavoro senza colpire in un database. Quali opzioni devo fare questo?Come gestire un repository IDisposable con Unity?
Im utilizzando l'assembly Fakes predefinito 'di Microsoft.
Il mio lavoro:
public void Work()
{
do
{
//code here
using (var repository = new Repository<User>())
{
repository.Save(user);
}
} while (true);
}
sto cercando di testare e in questa parte del test viene a mancare perché in realtà crea una nuova istanza della classe Repository.
La mia prova Metodo:
using (ShimsContext.Create())
{
Data.Repository.Fakes.ShimRepository<Domain.Fakes.ShimUser>.Constructor = (a) => { };
Data.Repository.Fakes.ShimRepository<Domain.Fakes.ShimUser>.AllInstances.SaveT0 = (a, b) =>
{
};
var service = GetService();
service.Work(); //Throws exception
}
Come posso fingere questo metodo Save
?
vedere Dipendenza iniezione: è necessario consentire il passaggio di un parametro in Work() o almeno in servizio, altrimenti crea sempre uno reale. –
Non ho familiarità con Fakes, ma forse non è abbastanza completo per le tue esigenze. So che questo è banale con una libreria come Moq (https://github.com/Moq/moq4). –
Non sarebbe nemmeno banale con Moq, poiché sta creando un'istanza concreta effettiva del repository nell'Opera. –