2009-10-13 22 views
15

Asp.net mvc çözümüm test etmek için Nunit ve Moq kullanıyorum. Modelin görünüme doğru bir nesne/koleksiyon olduğunu test etmenin iyi bir yolu bu mu?Test ASP.NET MVC View Model

[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()); 
} 

Bu tür sınamaların çerçeveyi anladığını anlıyorum, ancak umarım bir şekilde anlamıyorum. Bu sınava güvenebilir miyim? Şu anda biraz yorgunum, bu yüzden bir detaylandırma isteğinde bulunmaktan çekinmeyin.

Teşekkür

cevap

14

Hayır (sadece?) Çerçeve test etmez. Eylemin gerçekleştirilmesinin, sahte olmayan bir koleksiyondan oluşan bir ViewModel'de yapıldığını ve bu modelde bulunan sayımla aynı sayıyı topladığını test eder.

Sen

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

hatta

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

Ben bir birim test anlamına içine son şartını basitleştirmek olabilir, orada bazı kodlanmış değerler olması normaldir.

+1

Bunu onayladığınız için teşekkür ederiz. – alexn