Я пытаюсь подделать следующее:
DirectoryServices.AccountManagement.PrincipalSearcher.FindAll()
Проблема в том, что класс, возвращаемый этим методом, имеет закрытый конструктор:
PrincipalSearchResult<Principal>
Так что я не могуВозьмите обычный метод шим:
...
ShimPrincipalSearcher shimSearcher = new ShimPrincipalSearcher();
shimSearcher.FindAll = () => { return new PrincipalSearchResult<Principal>(); };
...
Кто-нибудь видел это раньше и нашел решение / подход для этого?
Мне известно, что очень подобный вопрос здесь:
Статический метод MS Fakes, который возвращает класс с помощью частного конструктора
Но принятый ответ, похоже, не работает для моего сценария - я подозреваю, потому что он специфичен для метода, который рассматривается в этом вопросе.
Я хотел бы придерживаться Fakes / Shim, если это возможно - какЯ использую его в других местах в своих модульных тестах - хотя я был бы рад попробовать альтернативные подходы (хотя я вряд ли получу одобрение на что-то вроде Typemock Isolator - как упомянуто в этом другом посте - из-за стоимости)
У меня был некоторый успех с другими применениями прокладок - в том числе для других методов DirectoryServices - поэтому немного расстраивает то, что я застрял на чем-то подобном (что, я думаю, почти наверняка приведет к некоторой простой ошибке с моей стороны)
Любые указатели на это приветствуются!