2008-11-18 2 views
0

У меня есть проблема с частичными насмешками помощью Rhino иронизирует: "Ожидайте"ожидание на частичном Mock - NullReference Exception

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

.м я получаю NullReferenceException на линия ..

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

ответ

1

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

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

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

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

var authentication = _mocks.DynamicMock<IAuthentication>(); 
Expect.Call(() => authentication.SetAuthCookie(null, null)).IgnoreArguments(); 
Смежные вопросы