C# 如何使用实体框架创建单元测试来测试数据插入方法?

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

我正在尝试为在ASP.NET MVC中将数据插入SQL Server数据库的方法创建单元测试。我有几个ActionResult方法可以将数据写入SQL Server数据库。以下是其中一种方法:

    [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);
    }
}