@DD-var

Почему не срабатывает валидация при тесте контроллера?

есть контроллер создания нового пользователя, в него должна прийти модель. отправляю через тест пустую модель и не выходит ошибки. если вручную добавить то все срабатывает
контроллер:
public async Task<ActionResult> Create([FromBody]RegisterViewModel user)
        {
           // ModelState.AddModelError("swe","ssssss");
  
            if (ModelState.IsValid)
            {
                var result = await _userService.Create(user);
                return Ok(user);
            }

            else
            {
                return BadRequest(ModelState);
            }
        }

модель:
public class RegisterViewModel
    {
        //обязательные поля
        [Required(ErrorMessage = "Пустое поле")]
        public string FirstName { get; set; }


        [Required(ErrorMessage = "Пустое поле")]
        public string FullName { get; set; }


        [Required(ErrorMessage = "Пустое поле")]
        public string UserName { get; set; }

}


тест:
public void CheckAddUser()
        {
            RegisterViewModel fakeUser = new RegisterViewModel();
            
            fakeUser.Password = null;
            fakeUser.UserName = null;
            fakeUser.Email = null;
            
            
            var moc = new Mock<IUserService>();
            moc.Setup(c => c.Create(It.IsAny<RegisterViewModel>()) );
            

            var userController = new TestController(moc.Object);

            var result = userController.Create(fakeUser);
//должен вернуть ошибку
          //  Assert.IsInstanceOf(result.GetType(),typeof(BadRequestResult));
            Assert.AreSame(result,typeof(BadRequestResult));
          

        }
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
yarosroman
@yarosroman Куратор тега C#
C# the best
Скорее всего, валидацию делает asp, а не контроллер, и при создании контроллера передает в него ModelState.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы