Tôi làm cách nào để thử nghiệm Controller.ViewData.ModelState
? Tôi muốn làm điều đó mà không có bất kỳ khuôn khổ giả nào.Làm cách nào để kiểm tra ModelState?
Trả lời
Bạn không phải sử dụng Mô hình nếu bạn đang sử dụng Mẫu Kho lưu trữ cho dữ liệu của mình, tất nhiên.
Một số ví dụ: http://www.singingeels.com/Articles/Test_Driven_Development_with_ASPNET_MVC.aspx
// Test for required "FirstName".
controller.ViewData.ModelState.Clear();
newCustomer = new Customer
{
FirstName = "",
LastName = "Smith",
Zip = "34275",
};
controller.Create(newCustomer);
// Make sure that our validation found the error!
Assert.IsTrue(controller.ViewData.ModelState.Count == 1,
"FirstName must be required.");
Một công cụ sửa đổi ảo trên các lỗi sẽ tốt đẹp, nhưng có một khoản thuế sắp xếp, trông có vẻ nặng nề đối với tôi. –
IMHO Giải pháp tốt hơn là sử dụng băng tải mvc. Bằng cách này, bạn nhận được hành vi thực tế hơn của bộ điều khiển của bạn, bạn nên cung cấp xác nhận mô hình để xác định số phận - thuộc tính của nó. Bài đăng dưới đây mô tả điều này (http://stackoverflow.com/a/5580363/572612). –
//[Required]
//public string Name { get; set; }
//[Required]
//public string Description { get; set; }
ProductModelEdit model = new ProductModelEdit() ;
//Init ModelState
var modelBinder = new ModelBindingContext()
{
ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(
() => model, model.GetType()),
ValueProvider=new NameValueCollectionValueProvider(
new NameValueCollection(), CultureInfo.InvariantCulture)
};
var binder=new DefaultModelBinder().BindModel(
new ControllerContext(),modelBinder);
ProductController.ModelState.Clear();
ProductController.ModelState.Merge(modelBinder.ModelState);
ViewResult result = (ViewResult)ProductController.CreateProduct(null,model);
Assert.IsTrue(result.ViewData.ModelState["Name"].Errors.Count > 0);
Assert.True(result.ViewData.ModelState["Description"].Errors.Count > 0);
Assert.True(!result.ViewData.ModelState.IsValid);
Tôi thực sự thích phương pháp này. Như bạn nói, nó là tốt hơn ở thử nghiệm một mô hình đúng cách đã được trang trí với các thuộc tính xác nhận. – stevethethread
Điều này thật tuyệt vời! – Ian1971
Rất tiện dụng. Tôi nghĩ rằng tôi thường đồng ý với những người nói rằng bạn không nên thử nghiệm các thuộc tính mô hình của mình, vì đó là một phần của khung, nhưng có những lúc cần phải xác nhận cho tất cả các lần điều khiển trong tương lai của bạn. –
Thêm vào câu trả lời tuyệt vời trên, kiểm tra sử dụng tuyệt vời này của phương pháp TryValidateModel bảo vệ trong lớp Controller.
Chỉ cần tạo một lớp thử nghiệm kế thừa từ bộ điều khiển và chuyển mô hình của bạn sang phương thức TryValidateModel. Đây là liên kết: http://blog.icanmakethiswork.io/2013/03/unit-testing-modelstate.html
Toàn bộ tín dụng được chuyển đến John Reilly và Marc Talary cho giải pháp này.
Xin bao gồm các giải pháp ở đây chứ không phải là liên kết giảm đến một bài viết trên blog – csharpsql
Liên kết của bạn là đã chết. –
Để thử nghiệm Web API, sử dụng phương pháp Validate trên bộ điều khiển:
var controller = new MyController();
controller.Configuration = new HttpConfiguration();
var model = new MyModel();
controller.Validate(model);
var result = controller.MyMethod(model);
- 1. Làm cách nào để cập nhật ModelState?
- 2. Làm cách nào để kiểm tra lỗi xác thực Mô hình trong asp.net mvc?
- 3. Làm thế nào biết nếu ModelState chứa lỗi
- 4. Làm cách nào để truy cập vào ModelState từ một ActionFilter?
- 5. Tôi có thể kiểm tra modelstate mà không cần modelbinding không?
- 6. Làm cách nào để kiểm tra junit dừng sau lần kiểm tra lỗi đầu tiên
- 7. Làm cách nào để bạn kiểm tra trình kiểm tra OpenGL được viết bằng GLSL?
- 8. Làm cách nào để bạn kiểm tra/thay đổi mã chưa được kiểm tra và không thể kiểm tra?
- 9. Làm cách nào để kiểm tra nền tảng Windows 7?
- 10. Bạn làm cách nào để "kiểm tra" mã?
- 11. Làm cách nào để kiểm tra EOF bằng Python?
- 12. Làm cách nào để kiểm tra kết nối mạng?
- 13. Tôi làm cách nào để kiểm tra các url django?
- 14. Làm cách nào để kiểm tra JavaMailSender của Spring
- 15. Làm cách nào để kiểm tra AlertDialog trong Android?
- 16. Làm cách nào để kiểm tra với NSUserDefaults?
- 17. SML Làm cách nào để kiểm tra loại biến?
- 18. Tôi làm cách nào để kiểm tra dịch vụ WCF?
- 19. Làm cách nào để bạn kiểm tra cookie bằng Chrome?
- 20. Làm cách nào để kiểm tra các biến Vim?
- 21. Làm cách nào để kiểm tra lỗi gọi lại ajax?
- 22. Làm cách nào để kiểm tra nút "like" của facebook?
- 23. Làm cách nào để lớp học dễ kiểm tra hơn?
- 24. Tôi làm cách nào để kiểm tra kiểu trong MongoDB?
- 25. Làm cách nào để bạn kiểm tra giao diện?
- 26. Làm cách nào để kiểm tra kết nối svn?
- 27. Làm cách nào để kiểm tra ổ cắm vẫn mở?
- 28. Làm cách nào để chỉ kiểm tra một hàm chuẩn?
- 29. Làm cách nào để kiểm tra ứng dụng Twilio?
- 30. Làm cách nào để kiểm tra giá trị trên AnyVal?
Hãy cụ thể hơn. Bạn đang cố gắng thử nghiệm cái gì? – skb