Witam, chciałem się dowiedzieć dlaczego poniższy test jednostkowy, który sprawdza czy rzuca wyjątek musi być w formie delegata? Dlaczego i po co .NET metode Assert.That()
przeciążył w taki sposób Assert.That(() => errorLogger.Log(error), Throws.ArgumentNullException);
zamiast podać Assert.That(errorLogger.Log(error), Throws.ArgumentNullException);
?
[Test]
[TestCase("")]
[TestCase(" ")]
[TestCase(null)]
public void Log_WhenCalled_InvalidException(string error)
{
var errorLogger = new ErrorLogger();
Assert.That(() => errorLogger.Log(error), Throws.ArgumentNullException);
// a czemu nie zwykłe wywolanie ?
// Assert.That(errorLogger.Log(error), Throws.ArgumentNullException);
}
public class ErrorLogger
{
public string LastError { get; set; }
public event EventHandler<Guid> ErrorLogged;
public void Log(string error)
{
if (String.IsNullOrWhiteSpace(error))
throw new ArgumentNullException();
LastError = error;
ErrorLogged?.Invoke(this, Guid.NewGuid());
}
}