Expectativas sobre Mock parcial - Excepção NullReference
-
08-07-2019 - |
Pergunta
Eu tenho um problema com zombaria parcial usando Rhino Mocks:
var authentication = (FormsAuthenticationService)_mocks.PartialMock(
typeof(FormsAuthenticationService));
Expect.Call( delegate{ authentication.SetAuthCookie(null, null); }).IgnoreArguments();
.. e eu recebo NullReferenceException em "Espere." linha ..
Vou apenas acrescentar que FormsAuthenticationService
implementos IAuthentication
Solução
Existe uma boa razão que você está tentando zombar a classe física, ao invés da interface? Pergunto isso porque existem 2 problemas potenciais com zombando FormsAuthenticationService:
-
A classe não pode ter um padrão construtor sem parâmetros (em que caso, você precisa especificar um método de sobrecarregado mocks.PartialMock).
-
O SetAuthCookie tem que ser virtual. estruturas simuladas normalmente pode zombar classes somente não selados, e apenas os membros virtuais de tal classe.
Para contornar esses problemas, eu recomendo zombando IAuthentication vez. Zombando de interfaces não tem essas limitações. Aqui está o código que você escreve:
var authentication = _mocks.DynamicMock<IAuthentication>();
Expect.Call(() => authentication.SetAuthCookie(null, null)).IgnoreArguments();