Я хочу, чтобы проверить это (метод контроллера):Каковы будут тесты в достаточной степени. Испытайте метод «Создать» в MVC?
public async Task<IActionResult> Create(SecurityQuestionViewModel securityQuestion)
{
if (ModelState.IsValid)
{
SecurityQuestion dataModel = new SecurityQuestion();
dataModel.questionText = securityQuestion.QuestionText;
await _securityRepository.AddAsync(dataModel);
return RedirectToAction("Index");
}
else
{
return View();
}
}
Мой модульного тестирования (до сих пор) выглядит следующим образом?
public async Task ModelContainsNewObjectAfterCreate()
{
//Arrange
_repository = new Mock<ISecurityQuestionRepository>();
_repository.Setup(repo => repo.GetAllAsync()).Returns(Task.FromResult(securityQuestion()));
_controller = new SecurityQuestionsController(_repository.Object, _mapper);
SecurityQuestion dataModel = new SecurityQuestion();
dataModel.questionText = "This is the new added question";
SecurityQuestionViewModel sqvm = new SecurityQuestionViewModel();
sqvm.QuestionText = dataModel.questionText;
//Act
var result = await _controller.Create(sqvm);
//Assert
var viewResult = Assert.IsType<RedirectToActionResult>(result);
_repository.Verify(r => r.AddAsync(dataModel), Times.Once);
}
viewResult
проходит. _repository
проверка нет.
Похоже, мне нужно проверить, что метод AddAsync
запущен (добавит запись в существующий репозиторий). Возможно, моя установка неверна
Он также чувствует, что мне нужно проверить количество «вопросов» в репозитории после запуска метода AddAsync
.
Я пытаюсь понять, что будет представлять собой адекватный тест и как имитировать «Добавить» с помощью Moq.
Любое понимание будет оценено по достоинству.
Этот Post кажется близким к тому, что я хочу.
Это потому, что модель была создана в рамках методы тестируемого поэтому он не соответствует. что вы можете сделать, это использовать «It.Is» с предикатом, который соответствует свойствам модели. – Nkosi