最近在和同学一起研究毕业设计,准备模仿《Pro ASP.NET MVC 4》里面的SportsStore设计模式和测试驱动开发.
由于和书中VS版本不同,发现不少问题,在此总结.
用户代码未处理 System.InvalidOperationException (msdn: 当方法调用对于对象的当前状态无效时引发的异常。) HResult=-2146233079 Message=未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。请确保在应用程序配置文件的“entityFramework”节中注册了该提供程序。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=260882。 Source=EntityFramework
解决方法:
添加引用:项目文件夹packagesEntityFramework.6.1.3lib et40EntityFramework.SqlServer.dll
System.Reflection.TargetInvocationException (由通过反射调用的方法引发的异常。) 当时是在DbContext的实现类初始化时报错 private EFDbContext context = new EFDbContext();
解决方法:添加同一个引用,添加的引用版本不同,可能会出现此异常
packagesEntityFramework.6.1.3lib
et40EntityFramework.SqlServer.dll
packagesEntityFramework.6.1.3lib
et40EntityFramework.dll
单元测试异常:
Mock<IProductRepository> mock = new Mock<IProductRepository>(); mock.Setup(m => m.Products).Returns(new Product[] { new Product { ProductID=1,Name="P1"}, new Product {ProductID=2,Name="P2" }, new Product {ProductID=3,Name="P3" }, new Product { ProductID=4,Name="P4"}, new Product {ProductID=5,Name="P5" } }.AsQueryable()); ProductController controller = new ProductController(mock.Object); controller.PageSize = 3; IEnumerable<Product> result = (IEnumerable<Product>)controller.List(2).Model;
测试名称: Can_Paginate 测试全名: SportsStore.UnitTests.UnitTest1.Can_Paginate 测试源: C:UsersainscDesktopSportsStoreSportsStore.UnitTestsUnitTest1.cs:第 16 行 测试结果: 未通过 测试持续时间: 0:00:00.688407 结果 的堆栈跟踪: 在 System.Web.Mvc.BuildManagerViewEngine..ctor(IViewPageActivator viewPageActivator, IResolver`1 activatorResolver, IDependencyResolver dependencyResolver, VirtualPathProvider pathProvider) 在 System.Web.Mvc.WebFormViewEngine..ctor(IViewPageActivator viewPageActivator) 在 System.Web.Mvc.WebFormViewEngine..ctor() 在 System.Web.Mvc.ViewEngines..cctor() --- 内部异常堆栈跟踪的末尾 --- 在 System.Web.Mvc.ViewEngines.get_Engines() 在 System.Web.Mvc.Controller.View(String viewName, String masterName, Object model) 在 System.Web.Mvc.Controller.View(Object model) 在 SportsStore.WebUI.Controllers.ProductController.List(Int32 page) 位置 C:UsersainscDesktopSportsStoreSportsStore.WebUIControllersProductController.cs:行号 29 在 SportsStore.UnitTests.UnitTest1.Can_Paginate() 位置 C:UsersainscDesktopSportsStoreSportsStore.UnitTestsUnitTest1.cs:行号 35 结果 的消息: 测试方法 SportsStore.UnitTests.UnitTest1.Can_Paginate 引发了异常: System.TypeInitializationException: “System.Web.Mvc.ViewEngines”的类型初始值设定项引发异常。 ---> System.IO.FileNotFoundException: 未能加载文件或程序集“System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。警告: 程序集绑定日志记录被关闭。 要启用程序集绑定失败日志记录,请将注册表值 [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD)设置为 1。 注意: 会有一些与程序集绑定失败日志记录关联的性能损失。 要关闭此功能,请移除注册表值 [HKLMSoftwareMicrosoftFusion!EnableLog]。
解决方法:
添加引用,程序集 System.Web.WebPages