Asp.net mvc 在asp.net mvc中测试上下文

Asp.net mvc 在asp.net mvc中测试上下文,asp.net-mvc,unit-testing,linq-to-sql,datacontext,Asp.net Mvc,Unit Testing,Linq To Sql,Datacontext,我对测试控制器很有经验,但我的问题是,我们不也应该测试数据上下文吗,以及如何测试?我的意思是,DB中有很多关系和约束,而仅仅测试控制器并不能涵盖这些关系和约束 另一方面,针对DB进行测试并不被认为是一种好的做法-那么呢?只需在没有db.SubmitChanges()或什么的情况下进行测试?是的,您应该对数据上下文进行集成测试,以确保放入数据库本身的任何“代码”都能正常工作—唯一性约束、触发器等。这并不意味着您应该对数据库进行单元测试,然而。话虽如此,您放入模型类中的任何代码都应该经过单元测试。通

我对测试控制器很有经验,但我的问题是,我们不也应该测试数据上下文吗,以及如何测试?我的意思是,DB中有很多关系和约束,而仅仅测试控制器并不能涵盖这些关系和约束


另一方面,针对DB进行测试并不被认为是一种好的做法-那么呢?只需在没有db.SubmitChanges()或什么的情况下进行测试?

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

在测试存储库时,典型的方法是创建一个内存中的数据库,每次运行测试时都可以对其进行拆卸和重建。通过使用这种方法,您将始终知道数据的外观,因此可以更轻松地对其进行断言。此外,您不会接触真实数据,这始终是一个积极因素。Sqlite是.NET空间中最流行的一个。希望微软已经做到了这一点,所以测试提交更改将数据持久化到数据库对我来说毫无意义。您应该进行集成或web测试,定义特定的场景并验证应用程序的输出。

问题是我使用jQuery验证,因为系统事先不知道哪个属性具有哪些验证。我通过一个管理面板添加自定义内容类型,并通过该管理面板为每个字段添加验证=>模型类中没有任何验证代码我并不是在暗示您需要在模型中有验证代码,只是将其作为您应该进行单元测试的模型中的代码示例(如果有)而且不需要访问真正的数据库。