Я пишу модульные тесты логики контроллера с Xunit.
Одно из моих действий контроллера возвращает BadRequestObjectResult
с объектом ModelStateDictionary
:
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
Для этого мойВ тестовом примере добавляется ошибка ModelState, например:
controller.ModelState.AddModelError("Test", "This is a test model error");
В инструкциях Assert моего теста я проверяю возвращаемый объект типа SerializableError
:
var returnError = Assert.IsType<SerializableError>(objectResult.Value);
Assert.Single(returnError);
Assert.True(returnError.ContainsKey("Test"));
Assert.True(returnError.ContainsValue("This is a test model error"));
The Assert.Single(returnError);
и Assert.True(returnError.ContainsKey("Test"));
проверки пройдены успешно, как и ожидалось.
Однако проверка значения ошибки не удалась (возвращается false
, но я ожидаю, что она вернет true
):
Assert.True(returnError.ContainsValue("This is a test model error"));
Из отладки видно, что значение, похоже, вложено в дополнительный string
объект:
Но у меня естьне удалось написать тест, который проверяет значение.Как мне это сделать?