Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHPUnity testy funkcjonalne bazy danych
Forum PHP.pl > Forum > PHP
drezer
Wiam

Chce przetestowac baze danych, klient testowy wypenia formularz przesyla go i dane sa zapisywane do bazy sprawdzane jest przekierowanie.
Jak moge przywrocic pierwotny stan bazy danych sprzed testow, nie bardzo ogarniam testy prosze o jakis kierunek poszukiwan, podpowiedz lub cokolwiek
Crozin
1. To już testy integracyjne, nie funkcjonalnie, niemniej jednak nadal możesz wykorzystać do nich PHPUnita.
2. Testy powinieneś wykonywać na osobnej bazie danych, która jest czyszczona i odpowiednio przygotowywana przed każdym uruchomieniem testów.
Pyton_000
Co do pytania to możesz zrobić transakcję, i po testach zrobić rollBack
Ale jak @Crozin napisał najlepiej testować na czystej bazie.
Forti
Dla bardziej wtajemniczonych:

można użyć mockery. Dobrą praktyką jest nie testować baz danych wink.gif pytanie co ów testy mają sprawdzać? Twój kod / metody / funkcje czy faktycznie zapis / odczyt z bazy danych. Wszystko można zasymulować za pomocą mockerów.
drezer
Testy raczej mają na celu sprawdzić czy kontroler i szablon działają prawidłowo, nie zapisuje w nich bezpośrednich odwołań do bazy. w testach tworze klienta on wypełnia formularz z danymi i nastepuje przekierowanie/wysłanie do akcji
phpion
Cytat(Forti @ 27.01.2015, 10:54:59 ) *
Dobrą praktyką jest nie testować baz danych wink.gif (...) Wszystko można zasymulować za pomocą mockerów.

Co jeśli podczas zapisywania danych do bazy odpalane są jakieś triggery, które wykonują dodatkową robotę? Ponadto czy w ten sposób jesteś w stanie sprawdzić czy np. więzy integralności nie zostaną naruszone?
skowron-line
  1. public function setUp()
  2. {
  3. //create database
  4. //create table
  5. }
  6.  
  7. // tests
  8.  
  9. public function tearDown()
  10. {
  11. //drop database
  12. }


+ jakies dane testowe powinny byc wrzucane do bazy danych (jezeli sa potrzebne)
Forti
Cytat(phpion @ 28.01.2015, 10:44:36 ) *
Co jeśli podczas zapisywania danych do bazy odpalane są jakieś triggery, które wykonują dodatkową robotę? Ponadto czy w ten sposób jesteś w stanie sprawdzić czy np. więzy integralności nie zostaną naruszone?



Triggery w bazie = słaby kod.

Mam testować PDO / ORM czy moją klasę? Są powody dla których w dokumentacji choćby symfony piszę jasno, że testowanie na bazie danych to zła praktyka.


edit:

Można zrobić tak jak kolega wyżej zaprezentował, zamiast mockerów.
Crozin
@Forti:
1. Masz chyba na myśli mocki, a nie żadne mockery?
2. W testach integracyjnych jak najbardziej może być użyta baza danych.
3. Stwierdzenie, że wykorzystanie triggerów w bazie danych to słaby kod, bez poparcia tego żadnym argumentem?

@drezer: Chcesz sprawdzić czy całość strony działa czy jedynie, osobno(!) działanie samego kontrolera i samego szablonu?
Forti
Ta, literówka, mocki a nie mockery wink.gif

Ja jestem zdania, że triggery w bazie są po prostu nie potrzebną abstrakcją. Tak mnie zreszą nauczono.
phpion
Cytat(Forti @ 28.01.2015, 13:49:01 ) *
Ja jestem zdania, że triggery w bazie są po prostu nie potrzebną abstrakcją. Tak mnie zreszą nauczono.

Podaj proszę jakiś konkretny powód takiej tezy. Czy uczono Cię również, że to samo tyczy kluczy obcych?

Osobiście jestem zupełnie innego zdania - im więcej triggerów tym lepiej. Po co aplikacja ma robić coś, co może zrobić baza danych? Jestem ciekaw jak ugryzłbyś taki temat bez triggerów: dodając lub aktualizując wartość pola liczbowego w tabeli A zaktualizuj średnią ze wszystkich wartości zapisując ją do tabeli B. W PHP osobne zapytanie? Fajnie, a teraz wprowadź liczbę do tabeli A z poziomu konsoli czy phpMyAdmina. Spójność danych leży i kwiczy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.