FluentValidation с ASP.NET Core: убедитесь, что проверка активна - PullRequest
0 голосов
/ 28 мая 2019

Мы используем FluentValidation для проверки ввода в наших контроллерах ASP.NET Core MVC. Поскольку валидаторы являются критически важной частью системы с точки зрения безопасности, мы хотели бы создать модульные тесты, которые гарантируют, что валидация действительно активна и что для каждого контроллера используется правильный валидатор.

Мы включаем FluentValidation как обычно в Startup.cs:

services.AddMvc(...).AddFluentValidation(...);

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

Как выполнить модульное тестирование цепочки валидации?

1 Ответ

0 голосов
/ 28 мая 2019

Ожидаемое поведение: валидации должны проверяться отдельно от действий контроллера, а для проверки действия вашего контроллера вы можете просто смоделировать ошибку состояния модели.

[Test]
public void Test_Validation_Error()
{

    //Arrange
    Controller controllerInstance = new Controller(); //Or use dependency injection in test project and use the instance thereafter.
    controllerInstance.ModelState.AddModelError("Model_Property_Name","Expected_Error_Message");
    CreatedModel model = new CreatedModel(); // Whose property we are validating.

    //Act
    ActionResult result = controllerInstance.Create(model);

    //Assert
    Assert.IsInstanceOfType(result,typeof(PartialViewResult));
}

Контроллер не знает о быстрой проверке, здесь тестирование должно проводиться отдельно, если ошибка проверки в состоянии модели вашего действия контроллера работает правильно. Для цепочки валидации в разделе «AddModelError» должны быть добавлены различные свойства модели, для которых предполагается запуск валидаций.

Надеюсь, это поможет! Удачного кодирования:)

...