Модульное тестирование с использованием xunit с использованием динамо-базы данных - PullRequest
0 голосов
/ 28 января 2019

У меня есть .net core api проект, где я подключаюсь к Dynamo DB в качестве базы данных.У меня также есть несколько конечных точек для получения данных, сохранения данных и удаления данных из динамо-базы данных.Теперь я хотел написать тестовые примеры для этих конечных точек.Модульное тестирование: я могу получить правильные данные, данные правильно сохраняются в динамо-базу данных, данные правильно удаляются из динамо-базы данных.

Чтобы начать с этим, я наткнулся на следующий пост в stackoverflow и у меня естьаналогичная настройка уже: .Net тестирования ядра с помощью Xunit

У меня есть несколько вопросов на основе принятого ответа в приведенном выше посте:

Пользователь в приведенном выше постеиспользуя MOQ для moq вверх данных и передачи его своему менеджеру DynamodB для его настройки, что означает, например, что мы можем смоделировать нашу модель согласно тесту ниже

[Fact]
public async Task GetAllData_ShouldGetAll()
{
    var searchResult = new List<MyModel>()
    {
        new MyModel() {FirstName = "abc", LastName="def", Address = "123 street", UpdatedBy = "abc"},
        new MyModel() {FirstName = "ghj", LastName="asd", Address = "56 street", UpdatedBy = "ghj"}
    };
    _dbManager
        .Setup(_ => _.GetAsync(It.Is<List<ScanCondition>>(list => list.Count == 2)))
        .ReturnsAsync(searchResult);


     // Act
     var okResult = _setController.GetAllData().Result as OkObjectResult;

     // Assert
    var items = Assert.IsType<List<MyModel>>(okResult.Value);
    Assert.Equal(2, items.Count);
}

Согласно тесту выше, поскольку наша модель настроена с 2 записямиПриведенный выше тест возвращает true, так как мы проверяем количество элементов равным 2.

Ques: - Это правильный способ издеваться?- Это правильный способ написать тест и проверить, возвращает ли он все данные из базы данных.

Теперь все вышеперечисленное касается насмешек.Что делать, если я не хочу издеваться и использовать реальную базу данных для проверки и запуска моих тестов.Как я могу это сделать.

Я попытался настроить свой тестовый конструктор, как показано ниже:

public class ValuesControllerTests
{
      private ValuesController _valuesController;
      private readonly IDynamoDbManager<MyModel> _dbManager;
      public ValuesControllerTests()
      {

            _dbManager = mockRepository.Create<IDynamoDbManager<MyModel>>();

            _valuesController = new ValuesController(options, _dbManager);      

      } 
}

Но мой _dbManager всегда равен нулю, я не уверен, как правильно это настроить.

Мой последний вопрос: - Какой подход лучше: использовать moq для тестирования или использовать живое соединение.

Извините за длинный пост, но я хотел убрать все и следовать правильному подходу.

Кто-нибудь для ввода?

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