Hogyan tesztelek repo pattern repository-kat mockal? C#
Van három entitásom (EF), ezeket egy általános és három entiti specifikus reposatory dolgozza fel (CRUD). Van egy logicom, amit mockolni szeretnék, ami a következőképpen kapcsolódik a repókhoz:
public class LogicABC : ILogic
{
IRepository<A> ARepo; //generic repo CRUD
IRepository<B> BRepo;
IRepository<C> CRepo;
public LogicABC(IARepository ARepo, IBRepository BRepo, ICRepository CRepo)
{
this.ARepo = ARepo; //entity specific repos CRUD
this.BRepo = BRepo;
this.CRepo = CRepo;
}
public LogicABC()
{
var Entity = new ABCEntities(); //context
this.ARepo = new ARepository(Entity);
this.BRepo = new BRepository(Entity);
this.CRepo = new CRepository(Entity);
}
//queries
public List<int> Query1()
{
var q1 = from x in CRepo.GetAll()
select x.Id;
return q1.ToList;
}
A célom, hogy a Query1-t mockoljam, setupoljam, aztán verify-oljam.
A probléma, hogy csak a következőképpen sikerült mockolnom a repót:
[Test]
public void TestThatLogicABCWorks()
{
Mock<IRepositoryA> mockInstance1 = new Mock<IRepositoryA>();
Mock<IRepositoryB> mockInstance2 = new Mock<IRepositoryB>();
Mock<IRepositoryC> mockInstance3 = new Mock<IRepositoryC>();
LogicABC logic = new LogicABC(mockInstance1.Object, mockInstance2.Object, mockInstance3.Object);
}
Így pedig nem tudom setupolni a logicot, csak a mockinstanceket, amelyekben viszont nincsen meg a query. Teljesen elakadtam ebben a problémában, minden segíségért nagyon hálás vagyok!
És ha az utolsó sorig bemockolsz mindent az osztályodból, akkor mit fogsz unit tesztelni?
A mock framework-öt?
Még mindig nem nagyon érted ennek az egésznek a lényegét.
Na ennyit ér az anonimitás:)
Igen, ez egy elég szörnyű beadandó feladat, tényleg annyi a feladat, hogy mockolj csak a mock kedvéért. Csinálok egy verify-t és megvagyok, de már órák óta küzdök vele.
Még stackoverflow sem hajlandó foglalkozni velem, ilyen még nem történt. Ennyire érthetelen vagy nehéz ez a kérdés?
Én nem azt látom, hogy SO-n annyira megoldották volna, hiszen nem is igazán volt probléma.
Inkább csak elmagyarázták sokadjára, hogy amit csinálni akarsz, annak semmi köze a feladathoz, mert a feladattal amúgy semmi baj nem volt, semmi "csak mockolj a mock kedvéért" nem volt benne, csak nem érted mi az unit test meg a mocking.
Én mondjuk kétlem, hogy mostanra értenéd.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!