Як би я розділив логіку тестової бази даних?


12

У мене все ще виникає проблема щодо подолання невеликої проблеми, коли мова йде про TDD.

Мені потрібен метод, який отримає певний набір записів відфільтрованих даних із рівня даних (linq2SQL). Зверніть увагу, що я використовую класи, згенеровані посиланнями, які генеруються з DBML. Тепер проблема полягає в тому, що я хочу написати для цього тест.

чи я:

а) спочатку вставити записи в тест, а потім виконати метод і протестувати результати

б) використовувати дані, які можуть бути в базі даних. Якщо не захоплюватися цією логікою, це може спричинити зламування речей.

в) що ви коли-небудь пропонуєте?

Відповіді:


7

Варіація на (а).

Майте тестовий db або підрозділ db, який можна використовувати для тестування. Коли ви налаштовуєте свої тести, створіть процедуру, яка ініціалізує БД, як вам це потрібно, щоб почати тестування (це можна зробити перед кожним тестом, якщо потрібно). Це може включати видалення даних, вставлення даних тощо. Потім запустіть свої тести. У фазі Teardown почистіть після себе. Можна повторювати стільки, скільки потрібно, без ризику порушити живу систему (не дуже гарна ідея тестувати, використовуючи дані в базі даних, необхідні для чого-небудь іншого).


1
Гарна відповідь. Мені подобається створювати викидні бази даних за допомогою sqlite. Це неможливо, якщо ви хочете протестувати речі, характерні для реалізації бази даних (наприклад, тригери, наприклад), але це дозволяє швидко та нешкідливо налаштувати / зняти.
bogeymin

1
@bogeymin - ви все ще можете налаштувати тестовий БД з тригерами, якщо хочете (ви можете створити весь db за допомогою сценарію під час FixtureSetup)
Ellis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.