Создание фиктивных объектов - PullRequest
0 голосов
/ 13 января 2012

Я создал простой графический интерфейс в WPF.Я хотел бы показать там некоторые данные, полученные из базы данных.Но пока у меня есть только графический интерфейс и несколько функций, которые делают простые вычисления на основе полученных данных.Я знаю, что моя цель - создать фиктивные объекты, которые бы генерировали «ложные» данные, но я не знаю, с чего начатьНе могли бы вы сказать мне, как создать один из них, тогда я мог бы создать аналогично остальные.Вот мой класс, который выполняет вычисления:

        public Statistic showUsersPostCount(Options options)
    {
        Query q = (Query)this.client.DoQuery();
        q.AddAuthor(options.Login);
        q.SetSinceDate(options.DateFrom);
        q.SetUntilDate(options.DateTo);
        q.AddTitleWord(options.Discussion);
        List<Entity> list = (List<Entity>)q.PerformQuery();

        Statistic statistic = new Statistic();

        statistic.UsersPostCount = list.Count;
        return statistic;
    }

эта функция возвращает некоторую простую статистику.Но у меня нет кода для класса Query.Как я могу издеваться над объектом этого класса?

Ответы [ 3 ]

0 голосов
/ 13 января 2012

Предполагая, что ваш код является методом в классе, который вы хотите смоделировать, вашим первым шагом будет создание интерфейса для реализации класса, если вы этого еще не сделали.передать ваш интерфейс (а не конкретный класс) в среду разработки (я использовал Moq, но я предполагаю, что nmock работает очень похоже).Затем вы можете заполнить фиктивные данные, которые вы хотите, чтобы ваши свойства / методы возвращали через среду имитации.

0 голосов
/ 13 января 2012

Как уже упоминали другие, ваш код не может быть смоделирован как есть ... по крайней мере, с помощью стандартных инструментов для проверки. Всегда есть Moles , который гордится тем, что позволяет вам "Mock the Unmockable". Кроты позволят вам издеваться над этим методом, как есть.

Тем не менее, если вам приходится прибегать к Moles, чтобы высмеивать вещи, которыми вы управляете внутри (инструмент был действительно разработан для насмешки внешних зависимостей, таких как базы данных и файлы и тому подобное), вам, вероятно, следует подумать о том, чтобы сделать свой дизайн более гибким. Тестируемый (то есть тестируемый без Moles) дизайн, скорее всего, в целом будет хорошим.

0 голосов
/ 13 января 2012

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

Как таковой, у этого метода есть только один вход 'options', но он имеет относительно минимальное влияние на код.

Кроме того, вы заявляете, что демонстрируете пример класса - но вы не- вы показываете только метод с именем showUsersPostCount.

...