Kezdőoldal » Számítástechnika » Programozás » Mockolt repository tesztelése...

Mockolt repository tesztelése során pontosan mit akarunk megállapítani c#?

Figyelt kérdés

É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.



2019. nov. 8. 15:13
1 2
 11/17 anonim ***** válasza:
Amúgy honnan van ez a feladat?
2019. nov. 8. 17:14
Hasznos számodra ez a válasz?
 12/17 A kérdező kommentje:

"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.

2019. nov. 8. 17:17
 13/17 A kérdező kommentje:

"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.

2019. nov. 8. 17:23
 14/17 anonim ***** válasza:

[link]


polimorfizmus rész...

2019. nov. 8. 17:43
Hasznos számodra ez a válasz?
 15/17 A kérdező kommentje:
Ezt teljesen megérdemlem, de igazából ezek általában már elég jól mennek. Félrevezetett a hibaüzenet "cannot convert" helyett ez az argumentes.
2019. nov. 8. 17:49
 16/17 anonim ***** válasza:

"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.

2019. nov. 8. 17:55
Hasznos számodra ez a válasz?
 17/17 A kérdező kommentje:
Teljesen igazad van, nagyon sokat segítettetek, köszönöm mindenkinek. Belekavarodtam egy rossz példába, amiről azt hittem jól használható a kódomban, de most már legalább azt értem ez miért nem jó.
2019. nov. 8. 18:00
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!