Asp.Net Mvc 5 / Web Api 2 per testare il livello di accesso ai dati

0

Diciamo che ho un'interfaccia IRepository implementata dalla classe Repository (usa il contesto del database per implementare i metodi IRepository). E interfaccia IUnitOfWork implementata dalla classe UnitOfWork usando IRepository.

Le mie domande sono:

1) Devo eseguire il test del Repository unitario per conto proprio? (non ho idea di come, perché usa il contesto del database e non so se è buona pratica simulare il contesto del database?)

2) Sarà sufficiente se sgozzerò IRepository e testò solo UnitOfWork?

    
posta Dato Maisuradze 18.05.2017 - 20:22
fonte

2 risposte

1

Should I unit test Repository on it's own?

Non penso che ci sia molto da fare. Si suppone che un repository funga da livello di astrazione tra la propria business logic e il database, quindi per il momento in cui si prende in giro il database a scopo di test, tutto ciò che resta da testare è l'endpoint dell'API del repository (un test che considererei come " non interessante ", e già coperto da test di integrazione comunque).

Will it be enough if I mock IRepository and only test UnitOfWork?

Ovviamente, a seconda di ciò che consideri "abbastanza". Questo è il posto giusto per prendere in giro un'operazione aziendale, secondo me, dal momento che i valori attesi sono quelli richiesti dal proprio repository simulato, e non quelli di un database (che richiederebbe un test di integrazione ).

Per dirla in altro modo, il tuo repository dovrebbe già restituire il valore "corretto". Se non sei sicuro, includi alcuni test di integrazione per il tuo repository (collegato con l'origine dati corretta) per assicurarti.

    
risposta data 18.05.2017 - 20:51
fonte
1
  • I don't know if it is good practice to mock database context?

  • Will it be enough if I mock IRepository and only test UnitOfWork?

Pensa sempre a ciò che hai effettivamente bisogno di testare.

Anche lo zio Bob ammette di non testare la sua GUI. Ti insiste anche a spostare tutta la logica fuori dalla GUI.

È lo stesso con il DB. Se riesci a spostare tutta la logica interessante dal DB, non devi prendere in giro il DB. Fai schifo a quello che usi per parlare al DB. Finché quella cosa non ha una logica interessante, va bene.

    
risposta data 18.05.2017 - 20:55
fonte