Я предполагаю, что это в одном из ваших контроллеров. Кроме того, я предполагаю, что у вас есть способ передать данные представления через конструктор или установщик, и что у вас есть способ зарегистрировать обработчик AuthenticateUnitAccount. Учитывая это, я бы сделал что-то вроде следующего:
[TestMethod]
public void OnAuthenticateUnitAccountSuccessTest()
{
IAuthenticationView view = MockRepository.GenerateStub<IAuthenticationView>();
view.Stub( v => GetPlayerID() ).Returns( 1 );
view.Stub( v => GetSecurityCode() ).Returns( 2 );
FakeAuthenticator authenticator = MockRepository.GenerateMock<FakeAuthenticator>();
authenticator.Expect( a => a.Authenticate( 1, 2 ) );
Controller controller = new Controller( view );
controller.AuthenticateUnitAccount += authenticator.Authenticate;
controller.OnAuthenicateAccount()
authenticator.VerifyAllExpectations();
}
Класс FakeAuthenticator содержит метод Authenticate, который соответствует сигнатуре вашего обработчика. Поскольку вам нужно знать, вызывается ли этот метод, вам нужно смоделировать его, а не заглушить, чтобы убедиться, что он вызывается с правильными аргументами и т. Д. Вы заметите, что я напрямую вызываю метод, а не вызываю событие , Поскольку вам нужно только проверить свой код здесь, нет необходимости проверять, что происходит при возникновении события. Вы можете проверить это в другом месте. Здесь мы просто хотим знать, что правильные методы вызываются с правильными аргументами.
В случае неудачи вы можете сделать что-то вроде:
[TestMethod]
[ExpectedException(typeof(UnauthorizedException))]
public void OnAuthenticateUnitAccountFailureTest()
{
IAuthenticationView view = MockRepository.GenerateStub<IAuthenticationView>();
view.Stub( v => GetPlayerID() ).Returns( 1 );
view.Stub( v => GetSecurityCode() ).Returns( 2 );
FakeAuthenticator authenticator = MockRepository.GenerateMock<FakeAuthenticator>();
authenticator.Expect( a => a.Authenticate( 1, 2 ) )
.Throw( new UnauthorizedException() );
Controller controller = new Controller( view );
controller.AuthenticateUnitAccount += authenticator.Authenticate;
controller.OnAuthenicateAccount()
authenticator.VerifyAllExpectations();
}