Moq и исключение SqlException

У меня есть следующий код для проверки того, что когда определенное имя передается моему методу, он генерирует исключение 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, и другой, если это какое-либо другое исключение. Это то, что тестирует мой модульный тест.

Есть ли способ добиться этого, не изменяя логику тестируемого метода или не тестируя этот сценарий?

30
задан SteveC 6 January 2014 в 14:43
поделиться