Jak miałbym testować logikę bazy danych testów?

12

Nadal mam problem z pokonaniem małego problemu, jeśli chodzi o TDD.

Potrzebuję metody, która uzyska określony zestaw rekordów przefiltrowanych danych z warstwy danych (linq2SQL). Należy pamiętać, że używam klas generowanych przez linq, które są generowane z DBML. Problem polega na tym, że chcę na to napisać test.

czy ja:

a) najpierw wstaw rekordy do testu, a następnie wykonaj metodę i przetestuj wyniki

b) wykorzystywać dane, które mogą znajdować się w bazie danych. Nie lubić tej logiki, ponieważ może to spowodować uszkodzenie.

c) co kiedykolwiek sugerujesz?

Neale
źródło

Odpowiedzi:

7

Odmiana na (a).

Przygotuj testową bazę danych lub podsekcję bazy danych, której można użyć do testowania. Podczas konfigurowania testów przygotuj procedurę, która inicjuje bazę danych, tak jak potrzebujesz, aby rozpocząć testowanie (można to zrobić odpowiednio przed każdym testem). Może to obejmować usuwanie danych, wstawianie danych itp. Następnie uruchom testy. W fazie Porzucenia posprzątaj po sobie. Można powtórzyć tyle, ile potrzeba, bez ryzyka zakłócenia działania systemu na żywo (nie jest dobrym pomysłem testowanie przy użyciu danych w bazie danych, które są potrzebne do czegokolwiek innego).

Yaakov Ellis
źródło
1
Dobra odpowiedź. Lubię tworzyć wyrzucane bazy danych za pomocą sqlite. Nie jest to możliwe, jeśli chcesz przetestować rzeczy specyficzne dla implementacji bazy danych (na przykład wyzwalacze), ale pozwala to na szybką i nieszkodliwą konfigurację / porzucenie.
bogeymin
1
@bogeymin - nadal można założyć DB testową z wyzwalaczy, jeśli chcesz (można stworzyć cały db ze skryptu podczas FixtureSetup)
Yaakov Ellis