У меня простой asp.net core 2.0 webapi. У меня есть модель, и я получаю значение из заголовка. Я устанавливаю свойство модели внутри действия контроллера и выполняю проверку модели, как показано ниже.
[HttpPost]
public async Task<IActionResult> Search(AggregateSearchCriteria criteria)
{
var providers = Request.Headers["providers"];
criteria.Providers = providers.ToString().Split(',').ToList();
ModelState.Clear();
//fails here
TryValidateModel(criteria);
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return ok();
}
Он работает нормально, но когда я пишу модульный тест, он не работает в строке TryValidateModel. Я вижу некоторую помощь в Google, но, похоже, мне это не помогает.
Кто-нибудь может помочь как это исправить?
Ошибка в модульном тесте:
AggregateSearchControllerTests.TestAggregateSearchWithValidData threw exception: System.NullReferenceException: Object reference not set to an instance of an object.
Спасибо
Может это поможет github.com/aspnet/Mvc/issues/8640
@Nkosi Я устанавливаю одно из свойств модели внутри метода действия, поэтому без очистки состояния модели он не будет повторно подтвержден с последней моделью.
@MukilDeepthi, но это устранит любые другие ошибки состояния модели. Просто удалите тот, который вы редактировали.
@xneg и Nkosi по этой ссылке решили проблему. Т
@Nkosi ну да? как удалить этот конкретный?
@MukilDeepthi if (ModelState.ContainsKey("Providers") ModelState.Remove("Providers");





В чем ошибка? скорее всего, в нем отсутствует какой-то контекст, который обычно предоставляется во время выполнения, который недоступен при модульном тестировании.