C #, NUnit: понятный способ проверить, что ArgumentException имеет правильное ParamName - PullRequest
7 голосов
/ 11 января 2010

Чтобы проверить, что что-то выдает, например, ArgumentException, я могу сделать это:

Assert.Throws<ArgumentException>(() => dog.BarkAt(deafDog));

Как я могу проверить правильность ParamName? И бонусный вопрос: Или вы, возможно, возможно, порекомендовали бы вообще не проверять это?

Ответы [ 2 ]

10 голосов
/ 11 января 2010

Найден довольно понятный способ (но, пожалуйста, дайте мне знать, если у кого-то есть еще лучший!)

var e = Assert.Throws<ArgumentException>(() => dog.BarkAt(deafDog));
Assert.That(e.ParamName, Is.EqualTo("otherDog"));

Facepalm ...

4 голосов
/ 11 января 2010

Если вы хотите сделать больше с исключением, чем просто утверждать, что оно выброшено, тогда Assert.Throws фактически возвращает исключение, и вы можете сделать это:

var exception = Assert.Throws<ArgumentException>(() => dog.BarkAt(deafDog));
// Assert something else about the exception
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...