У меня есть следующий код для проверки того, что когда определенное имя передается моему методу, он генерирует исключение SQL (, для этого есть причина, хотя это звучит немного странно ).
mockAccountDAL.Setup(m => m.CreateAccount(It.IsAny<string>(),
"Display Name 2", It.IsAny<string>())).Throws<SqlException>();
Однако это не скомпилируется, поскольку конструктор SqlException является внутренним :
'System.Data.SqlClient.SqlException' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'TException' in the generic type or method 'Moq.Language.IThrows.Throws()'
. Теперь я мог бы изменить это, чтобы указать, что он должен выдавать Exception
, но это не сработает для меня, потому что мой метод должен возвращать один код состояния, если это SqlException
, и другой, если это какое-либо другое исключение. Это то, что тестирует мой модульный тест.
Есть ли способ добиться этого, не изменяя логику тестируемого метода или не тестируя этот сценарий?