Ho esaminato le risposte relative a questo, ma non sembrano risolvere il mio problema.
Sono un gruppo di test e test abbastanza nuovo nel suo complesso. Ho appena terminato una piccola applicazione web utilizzando ASP.NET Core MVC e volevo scrivere test per i progetti. Sto usando xUnit e Moq.
Il progetto ha un livello di business logic che contiene la logica di business per l'app.
Sto scrivendo test per i controller, ma i controller contengono principalmente operazioni CRUD che utilizzano il livello di repository. I miei test per il controller prevedono l'utilizzo di un database in memoria poiché questo è il modo consigliato per ASP.NET Core MVC.
Tuttavia, ritengo che ciò che sto facendo non sia più unit test, ma test di integrazione dal momento che sto testando un database.
Avevo pensato di scrivere test di integrazione per il livello del repository e quindi unit test per i controller in modo tale che i controllori non dovessero controllare le operazioni del database.
Voglio sapere se questo è il modo giusto per andare o se c'è un altro modo.
Grazie. [Modificare]. Grazie @ greg-burghardt per la risposta. Ho fatto un errore nella mia domanda, in realtà intendevo scrivere che ho un livello di logica aziendale. Inoltre sto usando EF, e credo che si prenda cura del repository. I miei controller utilizzano l'interfaccia della BLL richiesta. Esempio
public class PaymentController : ControllerBase
{
private readonly IConfiguration _config;
private readonly IPaymentsBL _paymentsBL;
private readonly ILogger _logger;
public PaymentsController(IConfiguration config, IPaymentsBL paymentsBL, ILogger<PaymentsController> logger)
{
_config = config;
_paymentsBL = paymentsBL;
_logger = logger;
}
}
E l'implementazione,
public class PaymentsBL : GenericBL<MPayments>, IPaymentsBL
{
private readonly WellaPatientDbContext _db;
public PaymentsBL(WellaPatientDbContext db)
{
_db = db;
}
public IQueryable<MPayments> GetByPatientId(Guid id)
{
return _db.MPayments.Where(x => x.PaymentId == id);
}
}
Inoltre, hai detto che sto colpendo un vero database con i miei test. Non capisco dato che sto usando un database in memoria.
Quindi, se ho capito bene, i test per il livello della logica aziendale sono i più importanti. Grazie