在asp.net mvc中测试上下文

时间:2010-03-31 11:44:53

标签: asp.net-mvc unit-testing linq-to-sql datacontext

我对测试控制器非常有经验,但我的问题是,我们不应该测试数据上下文,以及如何测试?我的意思是,有很多关系和约束来自数据库,只是测试控制器没有涵盖。

另一方面,对DB进行测试并不是一个好习惯 - 那么呢?简单地测试没有db.SubmitChanges()或什么?

3 个答案:

答案 0 :(得分:1)

恕我直言,你不应该测试DataContext。希望微软已经这样做了,所以测试SubmitChanges会将数据保存到数据库中对我来说毫无意义。您应该进行集成或Web测试,您可以在其中定义特定方案并验证应用程序的输出。

答案 1 :(得分:0)

是的,您应该对数据上下文进行集成测试,以确保您放入数据库本身的任何“代码”都可以工作 - 唯一性约束,触发器等。这并不意味着但是,您应该对数据库进行单元测试。话虽如此,您在模型类中放入的任何代码都应进行单元测试。通常,您可以在不必直接测试数据库的情况下执行此操作。例如,任何验证代码都应该能够在不要求您实际插入或更新数据库的情况下运行。

答案 2 :(得分:0)

在测试存储库时,典型的方法是创建一个内存数据库,可以在每次运行测试时拆除并重建。通过使用这种方法,您将始终知道数据的外观,以便您可以更轻松地对其进行断言。此外,您不会触及您的真实数据,这始终是积极的。 Sqlite是.NET领域中最受欢迎的一种。