Быстро сгенерировать макет объектов хранилища, используя живые данные? Moq - PullRequest
5 голосов
/ 28 декабря 2011

Я даже не уверен, есть ли утилита, которая позволяет это, но кажется, что такая общая необходимость?

Существует ли программа / библиотека / компонент, который будет генерировать ложные объекты .NET (репозитории), которые будут выдавать некоторые ложные данные в виде определенных вызовов базы данных.

Позвольте мне уточнить: Если я тестирую репозиторий (не модульное тестирование, просто тестирую в окне консоли) и когда я передаю критерии выбора в мой репозиторий, он возвращает список объектов. Я хотел бы / love / для возможности захватить этот список объектов и преобразовать его в статический код установки C #, который будет служить настройкой для модульного теста. Мои объекты довольно сложны, и для их правильной настройки требуется много времени.

Возможно ли это? Моя команда использует Moq & Ninject

Ответы [ 2 ]

1 голос
/ 03 ноября 2012

Есть несколько хороших способов справиться с этой потребностью.

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

Иногда такое изменение неосуществимо, а иногда этот тестовый запах на самом деле не указывает на изменение дизайна. В этих случаях лучше всего сериализовать объекты (когда вы говорите «преобразовать его в статический код установки C #», это можно переформулировать как «сериализовать его как инструкции C # для его воссоздания»). Существует много относительно простых способов сериализации в xml, я рекомендую DataContract или XmlSerialization , оба они очень просты в реализации и использовании.

1 голос
/ 05 января 2012

Писать их от руки может быть затруднительно, но вам нужно сделать это правильно только один раз. Затем для каждого последующего теста вы можете изменить входные данные. Я не знаю, как сохранить или захватить ваши объекты во время выполнения. Я нашел веб-страницу, которая рассказывает о том, как это сделать, МОЖЕТ делать то, что вам нужно. http://code.google.com/p/moq-contrib/wiki/Automocking

Ура, Andrew

...