2010-12-14 3 views
1

Во-первых, мне лучше спросить, надо ли мне издеваться над словарями? И если я должен, как я могу это достичь?Как насмехаться со словарем?

Я использую Rhino Mocks. Я просмотрел его документацию и увидел, что он может издеваться над ArrayList. Поэтому я попробовал это в Словаре, но не повезло. Я получил ошибку, что я не называю виртуальный метод bla bla ... Будет ли проблема, если я не издеваюсь над этим?

ответ

3

Вы можете только имитировать интерфейсы или классы с помощью виртуальных методов: вы не можете макет Dictionary<K,V>, но вы можете высмеять IDictionary<K,V>.

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

2

Не зная вашего конкретного сценария тестирования, я бы не издевался над классом .NET framework, потому что вы можете считать, что он работает правильно.

Исключения из этого правила могут применяться к классам, предоставляющим доступ к внешним ресурсам (например, File или SQLConnection), но это связано с тем, что вы не хотите устанавливать эти ресурсы в своем модульном тесте, а не потому, что вы не хотите проверить сами классы.

2

Я могу заверить вас, что словарь отлично работает в .Net :)

Я думаю, что вы должны быть прагматичными при написании тестов, а не пытаться высмеивать все. Потому что как далеко вы можете пойти? Как вы издеваетесь над int? Очевидно, что где подлежит обсуждению линия границы, но я обычно не издеваться:

рамки
  • .Net, пока он не подключен к некоторым внешним ресурсам
  • мои собственные тривиальные классы (т.е. те, которые только хранить данные)
  • статические вспомогательные методы (они должны быть действительно простыми), включая методы расширения
Смежные вопросы