Ожидания при частичной имитации - исключение NullReference - PullRequest
0 голосов
/ 18 ноября 2008

У меня проблема с частичной насмешкой с использованием Rhino Mocks:

var authentication = (FormsAuthenticationService)_mocks.PartialMock(
  typeof(FormsAuthenticationService));
Expect.Call( delegate{ authentication.SetAuthCookie(null, null); }).IgnoreArguments();

.. и я получаю исключение NullReferenceException в «Ожидать». линия ..

Я просто добавлю, что FormsAuthenticationService реализует IAuthentication

1 Ответ

1 голос
/ 19 ноября 2008

Есть ли веская причина, по которой вы пытаетесь высмеивать физический класс, а не интерфейс? Я спрашиваю об этом, потому что есть 2 потенциальные проблемы с поддельным FormsAuthenticationService:

  1. Класс может не иметь значения по умолчанию конструктор без параметров (в котором случае, вам нужно указать перегруженный метод mocks.PartialMock).

  2. SetAuthCookie должен быть виртуальным. Фальшивые фреймворки обычно могут макетировать только незапечатанные классы и только виртуальные члены такого класса.

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

var authentication = _mocks.DynamicMock<IAuthentication>();
Expect.Call(() => authentication.SetAuthCookie(null, null)).IgnoreArguments();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...