Вопрос

Я новичок в Pex and Moles.Я пытаюсь запустить Pex в своем коде, но использую внедрение конструктора.Есть ли способ проинструктировать Pex о том, как вводить конструкторы?

Редактировать

родовое слово

Мне нужно ввести заглушку userRepository.Pex выдает ошибку NullReferenceException при вызове _userRepository.GetById (id).Я использовал Moq для своих модульных тестов, но хочу переключиться на pex и moles

Следует ли мне использовать PexFactories для создания заглушек?

Это было полезно?

Решение

Попробуйте передать тип Moles Stub параметризованному тесту, созданному Pex. Чтобы создать параметризованный тест, щелкните правой кнопкой мыши класс, который вы хотите изучить, и выберите PEX> Создать параметризованный модульный тест . Это создает метод в тестовом классе, который содержит аргументы. Индивидуальные тесты вызывают этот параметризованный тест, отправляя отдельные тестовые аргументы.

Когда тестируемый код использует внедрение зависимостей посредством аргументов (он имеет аргумент, типизированный для интерфейса), параметризованный метод тестирования, созданный Pex, также будет содержать тот же аргумент типа интерфейса. Вы можете написать свои собственные методы тестирования, которые также вызывают параметризованный метод, передавая ему свои собственные значения, включая тип интерфейса. Только не записывайте их в созданный Pex файл!

Я также предлагаю использовать типы Mole Stub для инъекций модульных тестов. Справочное руководство Microsoft Moles - очень хорошее место для начала обучения. о том, как использовать Moles в модульных тестах. При создании параметризованного теста для вашего интерфейса будет создан тип заглушки. Просто настройте объезды для вашего типа заглушки, а затем передайте их параметризованному тесту.

Создавать объездные маршруты очень просто. Я предлагаю создать в тестовом проекте метод конфигурации, который настраивает часто используемые обходные пути. Обычно я добавляю флаг перечисления в качестве аргумента к этому методу, поэтому я могу легко указать ему, какие обходные пути следует создать для определенных типов, и все это за один вызов.

Пример перечисления:

общий
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top