Так что я постоянно пишу этот код:
[TestMethod]
[Description("Asserts that an ArgumentNullException is thrown if ResetPassword(null) is called")]
public void ResetPassword_Throws_ArgumentNullException_With_Null_Parameter( )
{
try
{
new MembershipServiceProvider( ).ResetPassword( null );
}
catch ( ArgumentNullException )
{
// ArgumentNullException was expected
Assert.IsTrue( true );
}
catch
{
Assert.Fail( "ArgumentNullException was expected" );
}
}
Таким образом, вместо того, чтобы писать этот код снова и снова, я действительно хотел бы создать метод, который принимает лямбда-выражение, которое будет выполнять метод в блоке try.
Примерно так:
public void AssertExpectedException( Action theAction ) where TException : Exception
{
try
{
// Execute the method here
}
catch ( TException )
{
Assert.IsTrue( true );
}
catch
{
Assert.Fail( string.Format( "An exception of type {0} was expected", typeof( TException ) ) );
}
}
Так что я могу сделать что-то вроде этого:
var provider = new MembershipServiceProvider();
AssertExpectedException(provider => provider.ResetPassword(null));
Я действительно не уверен, что все это на правильном пути, но, надеюсь, кто-то может направить меня в правильном направлении.
Спасибо