Я начинаю новый проект и очень стараюсь использовать TDD для управления дизайном. Я настаивал в течение многих лет и, наконец, получил одобрение, чтобы потратить дополнительное время на этот проект, чтобы использовать его, пока я учусь, как делать это правильно.
Это новый модуль, привязанный к существующей системе. В настоящее время весь доступ к данным осуществляется через веб-сервисы, которые по большей части являются лишь тонкой оболочкой для хранимых процедур базы данных.
Одно требование заключается в том, что для данного магазина я возвращаю все заказы на поставку, которые считаются действительными для этого приложения. Заказ на поставку считается действительным, если его дата отгрузки находится в пределах заданного диапазона от даты открытия магазинов (это для новых магазинов).
Теперь я не могу поместить эту логику в код приложения, так как я не собираюсь возвращать миллион PO, просто чтобы получить дюжину, которую можно применить, к этому хранилищу, учитывая ограничение выше.
Я думал, я мог бы передать диапазон дат в Proc GetValidPO, и он использовал эти значения, чтобы вернуть действительные PO. Но что, если мы добавим еще одно требование к тому, что считается действительным PO?
И как я могу проверить это и убедиться, что он продолжает работать? Мы не используем ORM, и это вряд ли произойдет. И я не могу вызвать БД в моем тесте.
Я застрял.
Моя другая мысль: есть некоторые mocks, которые возвращают действительные данные, другие, которые возвращают некоторые неверные данные, и локальный репозиторий генерирует исключение, если возникают неверные данные, и проверяет, что исключение генерируется, если недействительные данные возвращаются процедурой GetValidPOs (или макет, используемый в тестировании).
Имеет ли это смысл? Или есть лучший способ?
ОБНОВЛЕНИЕ: я могу использовать EF, казалось бы. Теперь мне просто нужно выяснить, как его использовать, и сделать его тестируемым, при этом все еще имея возможность полагаться на хранимые процедуры и сложность разброса данных по нескольким базам данных.