Tôi đã cố gắng thực hiện công việc này và thực hiện nhiều tìm kiếm trên google/stackoverflow mà không có may mắn chút nào.ModelState.IsValid luôn đúng khi kiểm tra Trình điều khiển trong Asp.Net MVC Web Api
Tôi có một mô hình đơn giản:
public class MovieModel
{
public string Id { get; set; }
[Required]
[StringLength(100)]
public string Name { get; set; }
}
Một phương pháp trong điều khiển:
// POST: api/Movies
public IHttpActionResult Post([FromBody]MovieModel movieModel)
{
if (ModelState.IsValid)
{
//Code
}
}
Và một phương pháp thử nghiệm (là một thử nghiệm hội nhập, nhưng cùng sẽ xảy ra trong các thử nghiệm đơn vị):
[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());
}
Mặc dù mô hình rõ ràng là không hợp lệ nhưng nó luôn đánh giá thuộc tính IsValid là đúng.
Tôi đã thử nhiều cách tiếp cận cho đến nay mà không thành công.
Tôi đã thử phương pháp này .Validate trước đây, nhưng nó không tồn tại. Tôi đang sử dụng MVC 5. –
Tham chiếu microsoft hiển thị phương thức Validate, cho phiên bản 5 của MVC, nhưng nó đơn giản là không hoạt động, không phải Intellisense cũng không xây dựng các công trình. –
@ AndréBaptista Tại sao bạn lại nói về MVC? 'ApiController' là một lớp Web API, và được tìm thấy trong' System.Web.Http'. Đảm bảo bạn đã thêm đúng gói NuGet vào dự án thử nghiệm. –