Попробуйте передать тип заглушки Moles в параметризованный тест Pex.Чтобы создать параметризованный тест, щелкните правой кнопкой мыши класс, который вы хотите исследовать, и выберите PEX> Создать параметризованный модульный тест .Это создает метод в тестовом классе, который содержит аргументы.Отдельные тесты вызывают этот параметризованный тест, отправляя отдельные аргументы теста.
Когда тестируемый код использует внедрение зависимостей в виде аргументов (он имеет аргумент, типизированный интерфейсом), сгенерированный Pex метод параметризованного теста также будетсодержат тот же аргумент типа интерфейса.Вы можете написать свои собственные методы тестирования, которые также вызывают параметризованный метод, передавая ему свои собственные значения, включая тип интерфейса.Только не пишите их в сгенерированном Pex файле!
Я также предлагаю посмотреть на использование типов Mole Stub для ваших инъекций модульного теста. Справочное руководство по Microsoft Moles - отличное место для начала изучения использования Moles в модульных тестах.Тип заглушки родинок будет создан для вашего интерфейса при создании параметризованного теста.Просто настройте обходные пути для своего типа заглушки, а затем передайте его параметризованному тесту.
Создание обходных путей типа заглушки очень просто.Я предлагаю создать метод конфигурации в тестовом проекте, который настраивает часто используемые обходные пути.Я обычно добавляю флаг перечисления в качестве аргумента к этому методу, чтобы я мог легко сказать, какие обходные пути создавать для определенных типов, все в одном вызове.
Пример перечисления:
[Flags()]
public enum MoleConfigurations
{
MoleSqlClientObjects,
DisableDirectory_Exists,
DisableEventLogExtensions,
DisableInitializeDatabaseObjects,
DisableInitializeThreadingObjects,
DisableQueueExistingDataFiles,
DisableConstructor
}