Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- STUB
- [Fact]
- public void Finds_available_doctor()
- {
- var stubRepository = new Mock<IDoctorRepository>();
- // da bismo napravili stub ili mock, moramo imati interfejs da bismo napravili laznu implementaciju, u ovom slucaju ta implementacije je vezana za repozitorijum (podatke koje pribavljamo iz baze podataka)
- // u tekstu koda nema razlike da li je nesto STUB ili MOCK, i za jedno i za drugo koristimo Mock za pravljenje laznih implementacija
- var doctors = new List<Doctor>();
- pera.HolidayDates.Add(new DateRange(
- new DateTime(2020, 8, 8),
- new DateTime(2020, 8, 15)));
- pera.HolidayDates.Add(new DateRange(
- new DateTime(2020, 9, 10),
- new DateTime(2020, 9, 20)));
- doctors.Add(pera);
- mika.HolidayDates.Add(new DateRange(
- new DateTime(2020, 8, 1),
- new DateTime(2020, 8, 10)));
- mika.HolidayDates.Add(new DateRange(
- new DateTime(2020, 9, 10),
- new DateTime(2020, 9, 20)));
- doctors.Add(mika);
- stubRepository.Setup(m => m.GetAll()).Returns(doctors);
- // nas lazni repo treba da vraca neku informaciju za potrebe testa, kazemo preko Setup-a da kada se pozove funkcija GetAll, treba da se vrati lista lekara doctors
- DoctorService service = new DoctorService(stubRepository.Object);
- // da bismo izvukli laznu implementaciju iz mocka, pozivamo .object
- Doctor d = service.GetAvailable(
- new DateRange(new DateTime(2020, 8, 11, 12, 0, 0), new DateTime(2020, 8, 12, 12, 0, 0)));
- d.ShouldNotBeNull();
- }
- ------------------------------------
- MOCK
- [Fact]
- public void Sends_notification_when_moving_exam()
- {
- var mockNotify = new Mock<INotificationService>();
- DoctorService service = new DoctorService(CreateStubRepository(), mockNotify.Object); //CreateStubRepository je nasa metoda koja vraca isto sto i stubRepository.Object u STUB-u iz gornjeg testa, sa ubacenim doktorokima perom i mikom
- service.MoveExam(timeSpan: null, idExam: 0); // nije nam bitno sta nam se desava u MoveExam, samo nam je bitno da se sa pozivom te metode pozvala funkcija SendNotification iz lazne implementacije NotificationService-a, odnosno mockNotify-a
- mockNotify.Verify( // proveravamo da li se SendNotification pozvala ili ne
- n => n.SendNotification(
- doctorId: "doctorId",
- notificationMessage: "The exam was moved for the time TODO" // ovde su hardkodovani parametri cisto radi primera
- ),
- Times.Once // da li ce se metoda SendNotification samo jednom pozvati
- );
- }
Advertisement
Add Comment
Please, Sign In to add comment