Tôi có một hàm trả về kiểu ẩn danh mà tôi muốn kiểm tra trong bộ điều khiển MVC của mình.Đúc kiểu ẩn danh thành động
public JsonResult Foo()
{
var data = new
{
details = "something",
more = "More"
};
return Json(data);
}
Tôi muốn xác minh dữ liệu tôi nhận được từ hàm Foo, Điều tôi đang làm bây giờ là lấy kiểu dữ liệu và nhận giá trị thuộc tính của nó với sự phản ánh.
[Test]
public void TestOne()
{
var data = _controller.Foo().Data;
var details = data.GetType().GetProperty("details").GetValue(data, null);
var more = data.GetType().GetProperty("more").GetValue(data, null);
Assert.AreEquals("something", details);
Assert.AreEquals("More", more);
}
Có cách nào đơn giản tương tự như điều này để kiểm tra các thuộc tính ẩn danh không?
[Test]
public void TestTwo()
{
var data = (dynamic) _controller.Foo().Data;
var details = data.details; // RunTimeBinderException object does not contain definition for details
var more = data.more;
Assert.AreEquals("something", details);
Assert.AreEquals("More", more);
}
Do đây là để thử nghiệm đơn vị, bạn có thể sử dụng 'InternalsVisibleTo'. Xem [Anonymous Types là Internal, C# 4.0 Dynamic Beware!] (Http://www.heartysoft.com/anonymous-types-c-sharp-4-dynamic) Nhờ @MarcGravell để chỉ ra rằng các đối tượng ẩn danh là 'internal' ! – TrueWill
+1 cho InternalsVisibleĐể đề xuất. Làm việc như một say mê. –