Я попытался сделать эту работу и сделал много поисков google/stackoverflow без всякой удачи.
У меня простая модель:
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.
Я пробовал много подходов до сих пор без успеха.