2009-10-13 13 views
15

私はasp.net mvcソリューションをテストするためにNunitとMoqを使用しています。これは、ビューに渡されたモデルが正しいオブジェクト/コレクションであることをテストする良い方法ですか?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が生成されることがテストされます。あなたが、私はそれはユニットテストだ意味

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

あるいは

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

に最後の条件を簡素化することができ

、それはそこにいくつかのハードコードされた値を持つことが普通です。

+1

ありがとうございます。 – alexn

関連する問題