Какой объект я должен издеваться?

Я пишу хранилище. Получение объектов осуществляется через DAO. Создание и обновление объектов выполняется с помощью объекта Request, который передается объекту RequestHandler (а-ля Шаблон команды). Я не писал DAO, Request или RequestHandler, поэтому я не могу их изменять.

Пытаюсь написать тест для этого репозитория. Я издевался над DAO и RequestHandler. Моя цель - заставить поддельный RequestHandler просто добавить новый или обновленный объект в поддельный DAO. Это создаст иллюзию, что я говорю с БД. Таким образом, мне не нужно имитировать репозиторий для всех классов, которые вызывают этот репозиторий.

Проблема в том, что объект Request - это скопление строковых блобов и различных буквенно-цифровых кодов. Я почти уверен, что XML тоже задействован. Это какой-то беспорядок. Другой разработчик пишет код для создания объекта Request на основе хранимых объектов. А поскольку RequestHandler принимает запросы, а не объект, который я храню, он не может обновлять имитируемый DAO.

Возникает вопрос: нужно ли мне издеваться над запросом или подождать, пока другой парень, который работает медленно, завершит свой код, прежде чем я напишу тест? Или прикрутить и поиздеваться над всем репозиторием при тестировании классов, вызывающих репозиторий?

Кстати, я говорю «имитировать» не в смысле NMock, а скорее как подделку БД с помощью коллекции в памяти.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
314
2

Ответы 2

Чтобы протестировать репозиторий, я бы посоветовал вам использовать тестовые двойники для всех объектов нижнего уровня.

Чтобы протестировать классы, зависящие от репозитория, я бы посоветовал вам использовать тестовые двойники для репозитория.

В обоих случаях я имею в виду тестовые двойники, созданные какой-то имитирующей библиотекой (фейки, где это работает для теста, заглушки, где вам нужно что-то вернуть тестируемому объекту, и издеваются, если вам действительно нужно).

Если вы создаете реализацию DAO с использованием коллекций в памяти для функциональной замены базы данных в демонстрационной или тестовой системе, которая отличается от модульного тестирования верхних уровней. Я сделал нечто подобное, чтобы я мог давать прототипы людям и концентрироваться на бизнес-объектах, а не на физической модели. Однако это не для модульного тестирования.

Возможно, вы не создаете веб-приложение, но вы можете взглянуть на приложение NerdDinner, которое использует репозиторий. Это бесплатный PDF-файл, в котором объясняется, как создать приложение с использованием ASP.NET MVC, и его можно найти здесь: Профессиональный ASP.NET MVC 2.0

Другие вопросы по теме