Próbowałem zrobić to działa i zrobił wiele wyszukiwania google/stackoverflow bez szczęścia w ogóle.ModelState.IsValid zawsze prawdziwe podczas testowania kontrolera w Asp.Net MVC Web Api
Mam prosty model:
public class MovieModel
{
public string Id { get; set; }
[Required]
[StringLength(100)]
public string Name { get; set; }
}
metody w kontrolerze:
// POST: api/Movies
public IHttpActionResult Post([FromBody]MovieModel movieModel)
{
if (ModelState.IsValid)
{
//Code
}
}
oraz metody badania (to jest test integracji, ale to samo stałoby się w testach jednostkowych):
[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());
}
Pomimo faktu, że model jest wyraźnie nieprawidłowy, zawsze należy ocenić właściwość IsValid na wartość true.
Próbowałem wielu podejść do tej pory bez powodzenia.
Próbowałem tego. Metoda Validate wcześniej, ale nie istnieje. Używam MVC 5. –
W referencji microsoft przedstawiono metodę sprawdzania poprawności, dla wersji 5 MVC, ale po prostu nie działa, ani IntelliSense, ani kompilacja nie działają. –
@ AndréBaptista Dlaczego mówisz o MVC? 'ApiController' jest klasą Web API i znajduje się w' System.Web.Http'. Upewnij się, że dodałeś poprawne pakiety NuGet do projektu testowego. –