Я починаю новий проект і дуже дуже намагаюся використовувати TDD для управління дизайном. Я наполегливо наполягав на цьому і нарешті отримав дозвіл витратити додатковий час на цей проект, щоб використовувати його, поки я навчусь робити це правильно.
Це новий модуль, який потрібно зв'язати з існуючою системою. В даний час весь доступ до даних відбувається через веб-сервіси, які здебільшого є лише тонкою обгорткою над процедурами, що зберігаються в базі даних.
Однією з вимог є те, що для даного магазину я повертаю всі замовлення на купівлю, які вважаються дійсними для цієї програми. PO вважається дійсним, якщо дата доставки падає в залежності від заданого діапазону від дати відкриття магазинів (це стосується нових магазинів).
Тепер я не можу вписати цю логіку в код програми, оскільки я не збираюсь повернути мільйон ОЗ лише для того, щоб дістати десяток, на який можна звернутися, застосувати цей магазин, враховуючи вищевикладене обмеження.
Я думав, я можу передати діапазон дат у програму GetValidPOs і дозволити йому використовувати ці значення для повернення дійсних PO. Але що робити, якщо ми додамо ще одну вимогу до того, що вважається дійсним ПЗ?
І як я тестую це і переконуюсь, чи він працює? Ми не використовуємо ORM, і це навряд чи станеться. І я не можу викликати БД у своєму тесті.
Я застряг.
Моя інша думка - це деякі знущання, які повертають дійсні дані, інші, які повертають деякі погані дані, і змушують локальне сховище викинути виняток, якщо трапляються погані дані, і перевірити, що виняток буде викинуто, якщо недійсні дані повернуті GetValidPOs proc (або макет, який використовується при тестуванні).
Це має сенс? Або є кращий спосіб?
ОНОВЛЕННЯ: Я можу використовувати EF, здавалося б. Тепер мені просто потрібно розібратися, як ним користуватися, і зробити його перевіряючим, все ще будучи спроможним покластися на збережені процедури та труднощі розсипання даних по декількох базах даних.