2009-02-05 40 views
24

Với lớp điều khiển như sau:Làm thế nào để lấy dữ liệu mô hình từ một ViewResult trong ASP.NET MVC RC1?

public class ProjectController : Controller 
{ 
    public ActionResult List() 
    { 
     return View(new List<string>()); 
    } 
} 

Làm thế nào tôi có thể nhận được một tham chiếu đến đối tượng mô hình trong các thử nghiệm đơn vị sau đây?

public class ProjectControllerTests 
{ 
    private readonly ProjectController controller; 

    public ProjectControllerTests() 
    { 
     controller = new ProjectController(); 
    } 

    [Fact] 
    public void List_Action_Provides_ProjectCollection() 
    { 
     var result = (ViewResult)controller.List(); 

     Assert.NotNull(result); 
    } 
} 

Tôi đã thử bước vào hành động điều khiển để xem những trường nội bộ nào đã được đặt nhưng không có may mắn.

Kiến thức của tôi về ASP.NET MVC là khá hạn chế, nhưng tôi đoán là tôi không thiết lập bộ điều khiển với ngữ cảnh chính xác.

Mọi đề xuất?

Trả lời

37

Hãy thử:

result.ViewData.Model 

Hope this helps.

+0

fsabau, bạn hoàn toàn đúng. Không thể tin rằng tôi đã bỏ lỡ điều đó. D'oh! –

6

Trong phiên bản Ứng viên phát hành của khung công tác Asp.Net Mvc, mô hình được tạo sẵn thông qua thuộc tính "Mô hình" của đối tượng ViewResult. Dưới đây là một phiên bản chính xác hơn về thử nghiệm của bạn:

[Fact] 
public void List_Action_Provides_ProjectCollection() 
{ 
    //act 
    var result = controller.List(); 

    //assert 
    var viewresult = Assert.IsType<ViewResult>(result); 
    Assert.NotNull(result.ViewData.Model); 
    Assert.IsType<List<string>>(result.ViewData.Model); 
} 
Các vấn đề liên quan