Модульное тестирование поддельного репозитория, как я могу протестировать метод GetById без предварительного добавления объекта? - PullRequest
3 голосов
/ 24 ноября 2008

Насколько я понимаю, вы должны писать модульные тесты, которые изолируют функциональность. Итак, дан класс репозитория, который имеет этот метод:

Entity GetById(Guid id)

и реализация fake (с использованием словаря для хранения), как бы вы написали тест без предварительного добавления сущности? Можно ли использовать известный набор руководств для тестирования? Затем в конструкторе поддельного репозитория я мог бы заполнить словарь парой сущностей, где направляющие следуют шаблону, чтобы я мог проверить метод GetById () с помощью guid, который, как я знаю, вернет сущность.

Спасибо за чтение!

PS. Я впервые пишу юнит-тесты.

Ответы [ 2 ]

4 голосов
/ 24 ноября 2008

Да, вы можете использовать известные тестовые идентификаторы в своем тесте - это то, что я бы сделал. Хотя я стал поклонником Rhino Mocks , который позволяет вам более прямо указать в тесте, что вы ожидаете от макета объекта.

Например, перед вашим вызовом в хранилище вы должны сделать следующее:

Expect.Call(repository.GetById("someObject")).Return(new RepositoryThing());

Мне все равно нравится:)

2 голосов
/ 24 ноября 2008

Да, использование поддельной реализации объекта / интерфейса с фиксированным списком элементов, которые могут быть запрошены из поддельного экземпляра, является допустимой практикой.

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

В C # это также возможно, чтобы у поддельной реализации хранилища был метод добавления элементов в хранилище.

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