2009-10-13 116 views
15

我正在使用Nunit和Moq來測試我的asp.net mvc解決方案。這是測試傳遞給視圖的模型是否正確的對象/集合的好方法嗎?測試ASP.NET MVC視圖模型

[Test] 
public void Start_Page_Should_Display_Posts() 
{ 
    var posts = new List<Post> {new Post {Id = 1}, new Post {Id = 2}}; 

    var mock = new Mock<IRepository>(); 
    mock.Setup(x => x.FindAll<Post>()).Returns(posts.AsQueryable()); 

    var controller = new PostsController(mock.Object); 
    var result = controller.Index(null) as ViewResult; 
    var viewModel = controller.ViewData.Model as IEnumerable<Post>; 

    Assert.IsNotNull(result); 
    Assert.IsTrue(viewModel.Count() == mock.Object.FindAll<Post>().Count()); 
} 

據我瞭解,這種測試框架,但是希望你能明白我的意思。我能相信這個測試嗎?

目前我有點累,所以不要猶豫,要求詳細說明。

感謝

回答

14

不,它不測試(只?)的框架。它測試在一個ViewModel中執行操作的結果,該ViewModel由一個非空集合組成,該集合與模擬中提供的集合相同。

你可以簡化最後一個條件爲

Assert.IsTrue(viewModel.Count() == posts.Count); 

甚至

Assert.IsTrue(viewModel.Count() == 2); 

我的意思是這是一個單元測試,這是正常的在那裏有一些硬編碼值。

+1

感謝您確認這一點。 – alexn 2009-10-15 10:55:52