Tôi đã thử đơn vị kiểm tra một phương pháp trong một trong các Bộ điều khiển của tôi trả về một JsonResult. Trước sự ngạc nhiên của tôi đoạn mã sau không làm việc:Xác nhận JsonResult Có chứa Loại Chưa xác định
[HttpPost]
public JsonResult Test() {
return Json(new {Id = 123});
}
Đây là cách tôi thử nghiệm nó (cũng lưu ý rằng mã kiểm tra nằm trong lắp ráp khác):
// Act
dynamic jsonResult = testController.Test().Data;
// Assert
Assert.AreEqual(123, jsonResult.Id);
Các Assert
ném một ngoại lệ:
'đối tượng' không chứa một định nghĩa cho 'Id'
Tôi đã giải quyết vấn đề này bằng cách sử dụng các mục sau:
[HttpPost]
public JsonResult Test() {
dynamic data = new ExpandoObject();
data.Id = 123;
return Json(data);
}
Tôi đang cố gắng hiểu tại sao người đầu tiên không làm việc? Nó cũng có vẻ là làm việc với cơ bản bất cứ điều gì NHƯNG một loại vô danh.
Tôi đã thử mã của bạn bằng loại ẩn danh và nó hoạt động tốt cho tôi. Không chắc chắn lý do bạn nhận được lỗi đó. –
Bạn nhận được gì khi in ra 'jsonResult.GetType()'? (lỗi cho biết nó nghĩ rằng nó thuộc loại 'đối tượng' thay vì loại' <> f__AnonymousType0', đó là những gì tôi mong đợi) –
Kiểu là đối tượng thực sự. Tôi mong nó sẽ tự làm việc, không chắc tại sao tôi lại nhận được những kết quả đó. –