У меня есть следующий код для проверки того, что, когда определенное имя передается моему методу, оно генерирует исключение SQL (есть причина для этого, хотя это звучит немного странно).
mockAccountDAL.Setup(m => m.CreateAccount(It.IsAny<string>(),
"Display Name 2", It.IsAny<string>())).Throws<SqlException>();
Однако это не будет скомпилировано, потому что конструктор SqlException является внутренним:
'System.Data.SqlClient.SqlException' должен быть не абстрактный тип с открытый конструктор без параметров, чтобы использовать его в качестве параметра "TException" в родовом типе или методе 'Moq.Language.IThrows.Throws()'
Теперь я могу изменить это, чтобы указать, что он должен бросать Exception
, но это не сработает для меня, потому что мой метод должен возвращать один код состояния, если он является SqlException
, а другой, если это какой-либо другой исключение. Это то, что тестирует мой unit test.
Есть ли способ достичь этого, не изменяя логику метода, который я тестирую, или не тестировал этот сценарий?