Я попытался сделать это и сделал много поисков google/stackoverflow без всякой удачи.ModelState.IsValid всегда верно при тестировании контроллера в Asp.Net MVC Web Api
У меня есть простая модель:
public class MovieModel
{
public string Id { get; set; }
[Required]
[StringLength(100)]
public string Name { get; set; }
}
метод в контроллере:
// POST: api/Movies
public IHttpActionResult Post([FromBody]MovieModel movieModel)
{
if (ModelState.IsValid)
{
//Code
}
}
И метод испытания (это интеграционный тест, но то же самое случатся в модульных тестах):
[TestMethod]
public void MoviesController_Post_Without_Name()
{
// Arrange
var model = new MovieModel();
model.Name = "";
// Act
var result = controller.Post(model);
// Assert
Assert.IsInstanceOfType(result, typeof(InvalidModelStateResult));
Assert.AreEqual(6, controller.Get().Count());
}
Несмотря на то, что модель явно недействительна, она всегда оценивает свойство IsValid на значение true.
Я пробовал много подходов до сих пор без успеха.
Я пробовал этот .Validate метод раньше, но его не существует. Я использую MVC 5. –
Ссылка Microsoft показывает метод Validate для версии 5 MVC, но она просто не работает, ни Intellisense, ни сборка не работают. –
@ AndréBaptista Почему вы говорите о MVC? 'ApiController' - это класс веб-API, который находится в' System.Web.Http'. Убедитесь, что вы добавили правильные пакеты NuGet в тестовый проект. –