我试图在我的项目中测试一些异常,我捕获的异常之一是 SQlException
。
看起来你不能使用 new SqlException()
,所以我不知道如何在不调用数据库的情况下抛出异常(由于这些是单元测试,通常建议不要调用数据库,因为它很慢)。
我正在使用 NUnit 和 Moq,但我不知道如何伪造这个。
对于一些似乎都基于 ADO.NET 的答案,请注意我使用的是 Linq to Sql。所以那些东西就像是在幕后。
更多信息来自@MattHamilton:
System.ArgumentException : Type to mock must be an interface or an abstract or non-sealed class.
at Moq.Mock`1.CheckParameters()
at Moq.Mock`1..ctor(MockBehavior behavior, Object[] args)
at Moq.Mock`1..ctor(MockBehavior behavior)
at Moq.Mock`1..ctor()
发布到第一行时,它试图模拟
var ex = new Mock<System.Data.SqlClient.SqlException>();
ex.SetupGet(e => e.Message).Returns("Exception message");