Mvc pisanie testów

0

Witam Was serdecznie,

mam do Was pytania na temat pisania testów w MVC, jestem kompletnie zielony, pytania będą banalne,
przykładowa aplikacja w MVC z użyciem bazy danych i EF oraz Identity

  1. czy jestem w stanie za pomocą testów sprawdzić czy dana akcja zapisze mi przesyłane dane do bazy, oczywiście bez fizycznego ich zapisywania w bazie, czy i jaki wyrzuci wyjątek?

  2. czy jestem w stanie sprawdzić czy dane zostaną pobrane z bazy i w jakiej formie zostaną wyświetlone, mam tu na myśli daty, godziny, które często zapisywane są w bazie w innej formie, ale też chcę czasami sprawdzić tzw. lazy loading.

  3. mam już po większości ustawiony Identity, czy za pomocą testów jestem w stanie sprawdzić działanie niektórych akcji, czy zadziałają prawidłowo przy próbie użycia przez nieuprawnionych użytkowników.

Sorry za pytania ale w necie są przykłady testów dla kalkulatorków.

Dzięki za odpowiedzi.

8

Zadaj sobie pytanie: "co chce testować?".
Bo testuje sie zwykle SWÓJ kod. Więc test jednostkowy sprawdza tylko czy logika twojej aplikacji jest poprawna, a nie czy na przykład ORM faktycznie zapisze dane w bazie. To cie w ogóle nie obchodzi, to sobie powinni przetestować programisci tego ORMa. Analogicznie z odczytem z bazy - twoje testy maja obejmować weryfikacje i walidacje operacji które wykonujesz na danych, a nie sprawdzać czy dane sie odczytały.
W związku z tym zewnętrzne zależności Mockujesz i zakładasz że działaja ;]

edit: nie uwzględniam tu testów integracyjnych, ale te wykonuje się już w połączeniu z innymi komponentami aplikacji, w tym z bazą danych etc.

3
szymon7500 napisał(a):
  1. czy jestem w stanie za pomocą testów sprawdzić czy dana akcja zapisze mi przesyłane dane do bazy, oczywiście bez fizycznego ich zapisywania w bazie, czy i jaki wyrzuci wyjątek?

Jeśli to będzie wyjątek wynikający z naruszenia unikalności albo klucza obcego, bądź przekroczenia zakresu danych dla kolumny, to nie.
A z drugiej strony, co Ci szkodzi dane w bazie zapisać?

  1. czy jestem w stanie sprawdzić czy dane zostaną pobrane z bazy i w jakiej formie zostaną wyświetlone, mam tu na myśli daty, godziny, które często zapisywane są w bazie w innej formie,

Jeśli chodzi Ci o to, co jest wyświetlane w przeglądarce, to potrzebujesz jakiegoś frameworka do automatycznych testów webowych, np. Selenium. Tylko po co - format dat jest związany z ustawieniami regionalnymi, więc jest znany. Nie ma czego testować.

ale też chcę czasami sprawdzić tzw. lazy loading.

To by wymagało profilowania SQLa po odwołaniu się do leniwej właściwości. Niby możliwe, ale znasz jakiś framework, który takie coś umożliwia? I po co to automatyzować, wystarczy raz sprawdzić.

  1. mam już po większości ustawiony Identity, czy za pomocą testów jestem w stanie sprawdzić działanie niektórych akcji, czy zadziałają prawidłowo przy próbie użycia przez nieuprawnionych użytkowników.

Co rozumiesz przez "ustawiony Identity"?
Ogólnie taki test nie jest trudny, wystarczy wywołać akcję mockując użytkownika, który nie ma uprawnień. Ale taki test to też trochę przerost formy nad treścią.

0

Dzięki Panowie za odpowiedzi. Poczytam sobie trochę na ten temat, może bardziej zagadnienie zrozumiem. Nie ukrywam, że trochę zgłupiałem.
Bawię się programowaniem, mam stworzoną jakąś tam aplikację, do bazy używam Entity Code First i chciałem zobaczyć jak "zachowuje się" kod przeze mnie napisany nie uruchamiając fizycznie aplikacji. Myślałem, że może się uda jakimś testem. Ale ok... doczytam o co chodzi tak naprawdę z tym testami a potem będę zadawał w razie czego pytania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1