C# 如何使用实体框架创建单元测试来测试数据插入方法?
我正在尝试为在ASP.NET MVC中将数据插入SQL Server数据库的方法创建单元测试。我有几个ActionResult方法可以将数据写入SQL Server数据库。以下是其中一种方法:C# 如何使用实体框架创建单元测试来测试数据插入方法?,c#,visual-studio,entity-framework,unit-testing,C#,Visual Studio,Entity Framework,Unit Testing,我正在尝试为在ASP.NET MVC中将数据插入SQL Server数据库的方法创建单元测试。我有几个ActionResult方法可以将数据写入SQL Server数据库。以下是其中一种方法: [HttpPost] public ActionResult AddApi(ApiRedirect model) { try { List<ApiRedirect> list = dbProducts.ApiRed
[HttpPost]
public ActionResult AddApi(ApiRedirect model)
{
try
{
List<ApiRedirect> list = dbProducts.ApiRedirects.ToList();
int companyID = dbProducts.Companies.Where(x => x.CompanyName == model.Company.CompanyName).FirstOrDefault().CompanyID;
int mappingID = dbProducts.MappingNames.Where(x => x.Name == model.MappingName.Name).FirstOrDefault().MappingID;
ApiRedirect api = new ApiRedirect();
api.ApiName = model.ApiName;
api.CompanyID = companyID;
api.ApiURL2 = model.ApiURL2;
api.MappingID = mappingID;
api.ResponseType = model.ResponseType;
dbProducts.ApiRedirects.Add(api);
dbProducts.SaveChanges();
return View ();
}
catch (Exception ex){
throw ex;
}
}
我得到以下错误:
我想一些测试,写代码,检查代码是否插入到数据库中,然后删除。最好的方法是什么
更新
我已将MVC引用添加到我的项目中,现在出现以下错误:
提前谢谢 错误号1
要修复错误,请将System.web.mvc框架添加到单元测试中 PM>安装软件包Microsoft.AspNet.Mvc–20分钟前安装gh9 错误号2 您现在需要将System.web版本从4.0升级到5.2
试着添加这个您所说的是集成测试,而不是单元测试 你将有: 创建一些数据的调用 另一个根据您的标准进行实际测试/断言的 删除第一步中创建的测试数据的最后一步。 您有很多方法可以做到这一点,一种是在代码中,您编写的代码只与端点对话,您根本不需要实例化控制器 您必须确保您拥有一种以API方式创建/删除数据的方法,因此您需要这样做的端点
如果您不想编写代码,还可以使用类似Postman的工具,它可以很好地协调所有这些。这使您可以确定,从客户端将使用的端点到数据库,一切都正常工作。最好的方法是模拟存储库,不要通过单元测试将数据写入数据库。要修复错误,将System.web.mvc framework添加到单元测试PM>安装软件包Microsoft.AspNet.mvc如果要进行单元测试,请模拟数据库。如果要进行集成测试,可以插入内存中的数据库。你试过什么?我该怎么做?当我尝试添加时,最大版本是4.0?
[TestClass]
public class ApiRedirectTests
{
[TestMethod]
public void AddApiRedirect()
{
//Arrange
var controller = new ApiBrokerController();
ApiRedirect model = new ApiRedirect();
model.ApiName = "UnitTest";
model.CompanyID = 1;
model.ApiURL2 = "www.UnitTest.com/API";
model.MappingID = 1;
model.ResponseType = "json";
//Act
controller.AddApi(model);
}
}