У меня есть .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 для тестирования или использовать живое соединение.
Извините за длинный пост, но я хотел убрать все и следовать правильному подходу.
Кто-нибудь для ввода?