Một phương thức hành động trong ứng dụng ASP.NET MVC2 của tôi trả về một đối tượng JsonResult và trong thử nghiệm đơn vị của tôi, tôi muốn kiểm tra xem đối tượng JSON trả về có chứa các giá trị mong muốn hay không.Từ khóa "động" và dữ liệu JSON
Tôi cố gắng này:
1. dynamic json = ((JsonResult)myActionResult).Data;
2. Assert.AreEqual(JsonMessagesHelper.ErrorLevel.ERROR.ToString(), json.ErrorLevel);
Nhưng tôi nhận được một RuntimeBinderException " 'đối tượng' không chứa một định nghĩa cho 'ERRORLEVEL'".
Tuy nhiên, khi tôi đặt điểm ngắt trên dòng 2 và kiểm tra biến động json (xem hình bên dưới), rõ ràng là không chứa chuỗi ErrorLevel và nó có giá trị mong đợi, vì vậy nếu trình kết nối thời gian chạy không vui chơi thử nghiệm sẽ vượt qua.
Tôi không nhận được gì? Tôi đang làm gì sai và làm thế nào tôi có thể sửa lỗi này? Làm thế nào tôi có thể làm cho xác nhận vượt qua?
nó * đang hoạt động. Và tôi đánh giá cao cách nó hoạt động nhưng vẫn trông giống như một hack. Rất trực quan để sử dụng RouteValueDictionary để truy vấn nội dung của một đối tượng ẩn danh ... Tôi chỉ có thể hy vọng nhớ được giải pháp này vì tôi không nghĩ mình có thể tự mình làm được điều này. Không phải là có một lớp khác nhau mà sẽ làm cùng một thủ thuật với các đối tượng vô danh, một cái gì đó không bị ẩn trong System.Web.dll? (kỳ lạ này sống trong không gian tên System.Web.Routing, nhưng không trong System.Web.Routing.dll) –