我有以下代码来测试,当某个名称传递给我的方法时,它会抛出一个SQL异常(有理由那个,虽然听起来有点奇怪).
mockAccountDAL.Setup(m => m.CreateAccount(It.IsAny<string>(),
"Display Name 2", It.IsAny<string>())).Throws<SqlException>();
Run Code Online (Sandbox Code Playgroud)
但是,这不会编译,因为SqlException的构造函数是内部的:
'System.Data.SqlClient.SqlException'必须是具有公共无参数构造函数的非抽象类型,才能在泛型类型或方法'Moq.Language.IThrows.Throws()'中将其用作参数'TException'
现在,我可以更改它以声明它应该抛出Exception,但这对我不起作用,因为我的方法应该返回一个状态代码,如果它是a SqlException和另一个,如果它是任何其他异常.这就是我的单元测试正在测试的内容.
有没有办法实现这一点,既没有改变我正在测试的方法的逻辑,或没有测试这种情况?