K1SR

stub i mock

Jul 15th, 2025 (edited)
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.68 KB | None | 0 0
  1. STUB
  2.  
  3. [Fact]
  4. public void Finds_available_doctor()
  5. {
  6.     var stubRepository = new Mock<IDoctorRepository>();
  7. // 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)
  8. // u tekstu koda nema razlike da li je nesto STUB ili MOCK, i za jedno i za drugo koristimo Mock za pravljenje laznih implementacija
  9.    
  10.     var doctors = new List<Doctor>();
  11.  
  12.     Doctor pera = new Doctor(name: "Pera Peric", email: "[email protected]");
  13.     pera.HolidayDates.Add(new DateRange(
  14.         new DateTime(2020, 8, 8),
  15.         new DateTime(2020, 8, 15)));
  16.     pera.HolidayDates.Add(new DateRange(
  17.         new DateTime(2020, 9, 10),
  18.         new DateTime(2020, 9, 20)));
  19.     doctors.Add(pera);
  20.  
  21.     Doctor mika = new Doctor(name: "Mika Mikic", email: "[email protected]");
  22.     mika.HolidayDates.Add(new DateRange(
  23.         new DateTime(2020, 8, 1),
  24.         new DateTime(2020, 8, 10)));
  25.     mika.HolidayDates.Add(new DateRange(
  26.         new DateTime(2020, 9, 10),
  27.         new DateTime(2020, 9, 20)));
  28.     doctors.Add(mika);
  29.  
  30.     stubRepository.Setup(m => m.GetAll()).Returns(doctors);
  31. // 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
  32.  
  33.     DoctorService service = new DoctorService(stubRepository.Object);
  34. // da bismo izvukli laznu implementaciju iz mocka, pozivamo .object
  35.  
  36.     Doctor d = service.GetAvailable(
  37.         new DateRange(new DateTime(2020, 8, 11, 12, 0, 0), new DateTime(2020, 8, 12, 12, 0, 0)));
  38.  
  39.     d.ShouldNotBeNull();
  40. }
  41.  
  42.  
  43. ------------------------------------
  44.  
  45. MOCK
  46.  
  47. [Fact]
  48. public void Sends_notification_when_moving_exam()
  49. {
  50.     var mockNotify = new Mock<INotificationService>();
  51.     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
  52.  
  53.     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
  54.  
  55.     mockNotify.Verify( // proveravamo da li se SendNotification pozvala ili ne
  56.         n => n.SendNotification(
  57.             doctorId: "doctorId",
  58.             notificationMessage: "The exam was moved for the time TODO" // ovde su hardkodovani parametri cisto radi primera
  59.         ),
  60.         Times.Once // da li ce se metoda SendNotification samo jednom pozvati
  61.     );
  62. }
  63.  
Advertisement
Add Comment
Please, Sign In to add comment