测试ASP.NET MVC视图模型

ale*_*exn 16 c# nunit unit-testing moq

我正在使用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());
}
Run Code Online (Sandbox Code Playgroud)

我理解这种测试框架,但希望你能明白我的意思.我能相信这个测试吗?

目前我有点累,所以不要犹豫,要求详细说明.

谢谢

And*_*nea 14

不,它不测试(仅?)框架.它测试执行操作会导致ViewModel包含一个非null,与mock中提供的计数相同的集合.

你可以将最后的条件简化为

Assert.IsTrue(viewModel.Count() == posts.Count);
Run Code Online (Sandbox Code Playgroud)

甚至

Assert.IsTrue(viewModel.Count() == 2);
Run Code Online (Sandbox Code Playgroud)

我的意思是它是一个单元测试,在那里有一些硬编码值是正常的.