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)
我的意思是它是一个单元测试,在那里有一些硬编码值是正常的.