c# - 测试 ASP.NET MVC View 模型

标签 c# unit-testing nunit moq

我正在使用 Nunit 和 Moq 来测试我的 asp.net mvc 解决方案。这是测试传递给 View 的模型是否是正确对象/集合的好方法吗?

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

我知道这种测试框架,但希望你能明白我的意思。我可以相信这个测试吗?

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

谢谢

最佳答案

不,它不测试(仅?)框架。它测试在一个 ViewModel 中执行操作结果,该 ViewModel 由一个非空集合组成,其计数与模拟中提供的集合相同。

你可以将最后一个条件简化为

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

甚至

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

我的意思是这是一个单元测试,其中有一些硬编码值是正常的。

关于c# - 测试 ASP.NET MVC View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1562683/

相关文章:

java - 在单元测试中访问私有(private)静态最终值的最佳实践

.net - 您如何指示 NUnit 从特定目录加载程序集的 dll.config 文件?

unit-testing - 单元测试 Azure EventHub、流分析作业和存储表

nunit - 如何从使用测试资源管理器在 Visual Studio 中运行的 Nunit 测试适配器获取结果文件

ios - 如何在 MonoDevelop 中运行 MonoTouch 单元测试?

c# - 具有依赖注入(inject)的 WinForms MVC

c# - 从模型 MVC 4 动态加载列表

c# - 如何使用 LINQ 将多级元组列表拆分为多级值列表?

c# - 为什么 mvcaction4 代码片段没有反应?

javascript - 模拟 AngularJS Controller 中的 $state 变化