Mockolt repository tesztelése során pontosan mit akarunk megállapítani c#?
Értem a unit testeket, de ez a dependency elválasztás teljesen összekavart és nem igazán értem amit googlen találtam, de azért összeállítottam egy példát, hogy mit nem értek.
public void TestCRUDCreateCrew()
{
Mock<ICrewRepository> mockInstance = new Mock<ICrewRepository>();
CrewLogic logic = new CrewLogic(mockInstance.Object);
Crew crew = new Crew()
{
Crew_Id = 999,
Sex = 2,
Name = "Test Joe",
};
logic.LCreateCrew(crew); //nem működik "nincs formal parameter corresponding a "sex" hez", de a következő sor meg működik (meg teszteltem a crudot consoleból, az is működött). Nem ugyanaz a kettő?
//logic.LCreateCrew(999, 2, "Test Joe");
mockInstance.Verify(x => x.CreateCrew(999, 2, "Test Joe"), Times.Once);
Assert.That(Result ???, Is.EqualTo(???));
}
Az első problémám, amit kommentben írtam, ennek valószínűleg nincs közre a mockhoz, de nem tudok rájönni mi a baja.
A második problémám, hogy pontosan mit csinálok.
"Te most szopatsz minket?"
Nem, ennyire azért nem érek rá:) Komolyan segítségre szorulok és nagyon értékelek minden hozzászólást.
"Plusz egyelőre azt sem értem mi értelme a logic osztálynak, ha az égvilágon semmit nem csinál."
Tudtommal a repo pattern lényege, hogy a logic nem dolgoz fel adatot, ezért csak hivatkozik a repositoryra. A logicban vannak join, group by-os csodák, amelyek ott vannak megvalósítva, ez az egész logic értelme.
"Azért nem tudod milyen tesztet írj, mert a tesztelendő osztályod az égvilágon semmit nem csinál, nincs rajta mit tesztelni."
Valóban itt van a zavar, azt akarom tesztelni, hogy a createcrew egyszer futott le és a tartalma megegyezik a fake crew-al. Kicsit kifejtenéd, ez miért rossz hozzáállás/te hogyan tesztelnél egy create-ot? Köszönöm.
"Hol van az LCreateCrew(crew: Crew): void metódusod??"
Ez lesz az!! Köszi szépen, nagyon elnéztem a példát, amiből dolgoztam, minden megegyezett csak ez nem.





"Valóban itt van a zavar, azt akarom tesztelni, hogy a createcrew egyszer futott le és a tartalma megegyezik a fake crew-al. Kicsit kifejtenéd, ez miért rossz hozzáállás/te hogyan tesztelnél egy create-ot? Köszönöm."
Milyen fake crew-val?
public void LCreateCrew(int crewid, int sex, string name) {
this.crewRepo.CreateCrew(crewid, sex, name);
}
Ezen a kódon kb csak annyit tudsz tesztelni, hogy a paramétereket jól adtad-e át.
Tehát amit írtál: mockInstance.Verify(x => x.CreateCrew(999, 2, "Test Joe"), Times.Once); mindent lefed.
Nem adsz vissza értéket, nem hozol létre objektumot, nem csinálsz argumentumellenőrzést, jeleneg nincs más amit tesztelni lehetne.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!