DotNet Core, как мне выполнить модульное тестирование метода действия контроллера с привязкой к пользовательской модели - PullRequest
0 голосов
/ 20 сентября 2019

В ASP.Net Core 2.2 у меня ModelBinder используется в моем PUT следующим образом:

[HttpPut("{taskIdentifier}/{number}")]
public async Task<IActionResult> Put(string taskIdentifier, string number, 
            [ModelBinder(typeof(TaskUpdateV1Binder<TaskUpdate>))]TaskUpdate value)

Во время выполнения вызывается TaskUpdateV1Binder, он читает тело запроса и создает объект TaskUpdate.

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

У меня уже есть тесты самого связывателя, но мне нужно проверить, используется ли он контроллером.
Яне тестирует MVC маршрутизацию.

  • Мне нужен модульный тест, который не пройдёт, если кто-то удалит аннотацию ModelBinder.

  • Некоторые свойства устанавливаются связывателем (например, ModelState.IsValid), и я хочу убедиться, что неправильный ввод приводит к правильному выводу.

  • Этоне должен использовать фактическую модель связующего.Я могу смоделировать тот, который делает то, что мне нужно.Если я сделаю это, мне все равно понадобится хотя бы один тест, чтобы убедиться, что аннотация правильно применяется в коде.

1 Ответ

0 голосов
/ 28 сентября 2019

Это возможно с помощью интеграционного теста, который можно запустить до развертывания.Подобный вопрос был задан на SO и ответил приятно (ИМХО) здесь .Проверьте его, если хотите увидеть краткое объяснение и пример.

Как указано в этом ответе, я также рекомендую вам ознакомиться со следующей документацией: https://docs.microsoft.com/en-us/aspnet/core/testing/integration-testing

...