Носорог издевается над насмешкой - PullRequest
2 голосов
/ 26 июля 2010

Можно ли использовать насмешки Rhino для макета WindowsImpersonationContext?

Я получаю:

System.MissingMethodException: не удается найти конструктор с совпадающими аргументами ----> System.MissingMethodException: Конструктор типа «WindowsImpersonationContextProxy04bee852de914d5b8a47d6776edc4cb3 '

var windowsImpersonationContext = mockRepository.Stub<WindowsImpersonationContext>();
mockImpersonation.Stub(x => x.ImpersonateUser("username", "domain", "password")).Return(windowsImpersonationContext);

Вот мой код, который мне нужно смоделировать

public interface IImpersonation
{
    WindowsImpersonationContext ImpersonateUser(string sUsername, string sDomain, string sPassword);
}

Ответы [ 2 ]

1 голос
/ 26 июля 2010

Похоже, вы хотите заглушить IImpersonation, а не WindowsImpersonationContext.Это то, что возвращает IImpersonation.ImpersonateUser.

Однако WindowsImpersonationContext не имеет публичного конструктора, поэтому вы не можете создать фиктивный конструктор для тестирования.Возможно, вы захотите создать интерфейс для WindowsImpersonationContext.Заглушка интерфейса для тестирования и производства, создайте класс-оболочку, реализующий интерфейс и делегирующий вызовы реальному WindowsImpersonationContext.

0 голосов
/ 27 июля 2010

Вы не можете заглушить / смоделировать WindowsImpersonationContext, потому что это конкретный класс.Я не думаю, что вы можете создать его самостоятельно (извините, у меня нет удобной проверки VS), поэтому я бы предложил изменить ваш интерфейс так, чтобы он возвращал все, что вам нужно, из WindowsImpersonationContext (возможно, в вашем собственном типе), чтобы вы моглимогу посмеяться над этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...