Какой объект я должен издеваться? - PullRequest
0 голосов
/ 27 сентября 2008

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 27 сентября 2008

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

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

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

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

0 голосов
/ 03 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...