Как издеваться над словарем? - PullRequest
1 голос
/ 14 декабря 2010

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

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

Ответы [ 3 ]

3 голосов
/ 14 декабря 2010

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

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

2 голосов
/ 14 декабря 2010

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

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

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

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

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

...