Как создать модульный тест для тестирования методов вставки данных с Entity Framework? - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь создать модульные тесты для методов, которые вставляют данные в базу данных SQL Server в ASP.NET MVC. У меня есть несколько 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;
        }
    }

Однако, когда я пытаюсь сделать это в моем тестовом проекте, вот так:

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

Я получаю следующую ошибку:

enter image description here

Я бы хотел какой-нибудь тест, который пишет код, проверяет, вставлен ли код в базу данных, и затем удаляет. Каков наилучший способ сделать это?

UPDATE Я добавил ссылку MVC в свой проект, и теперь я получаю следующую ошибку:

enter image description here

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Вы говорите о интеграционном тесте, а не о модульном тесте.

у вас будет:

  • вызов, который создает некоторые данные
  • другой, который делает реальный тест / утверждает по вашим критериям
  • последний, который удаляет тестовые данные, созданные на первом этапе.

У вас есть несколько способов сделать это, один в коде, вы пишете код, который обращается только к конечным точкам, вам вообще не нужно создавать экземпляр контроллера.

Вы должны убедиться, что у вас есть способ создания / удаления данных в виде API, поэтому вам нужны конечные точки, которые делают это.

Если вы не хотите писать код, вы также можете использовать что-то вроде Postman, которое может прекрасно организовать все это. Это дает вам уверенность в том, что все работает, начиная с конечных точек, которые будут использовать клиенты, вплоть до базы данных.

0 голосов
/ 24 июня 2019

Ошибка номер 1

Чтобы исправить ошибку, добавьте инфраструктуру System.web.mvc в свой модульный тест PM> Install-Package Microsoft.AspNet.Mvc - gh920 минут назад

Ошибка № 2

Теперь вам нужно обновить версию System.web до 5.2 с 4.0

Попробуйте добавить это Nuget Package

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...