Ожидания от частичного макета — исключение NullReference

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

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

.. и я получаю NullReferenceException на «Ожидание». линия..

Добавлю только, что FormsAuthenticationService реализует IAuthentication


person rafek    schedule 18.11.2008    source источник


Ответы (1)


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

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

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

Чтобы обойти эти проблемы, я бы рекомендовал вместо этого имитировать IAuthentication. Мокающие интерфейсы не имеют этих ограничений. Вот код, который вы бы написали:

var authentication = _mocks.DynamicMock<IAuthentication>();
Expect.Call(() => authentication.SetAuthCookie(null, null)).IgnoreArguments();
person Judah Gabriel Himango    schedule 19.11.2008