【发布时间】:2010-12-04 11:03:20
【问题描述】:
我正在使用 ASP.NET MVC 2、NUnit、Moq 和 MVC Contrib。我已经编写了我的第一个单元测试,关于这个测试我有几个问题。我的情况是我有一个索引视图。在这个视图中,我有一个显示所有新闻项目的网格。
这是我的 INewsRepository 类:
public interface INewsRepository
{
IEnumerable<News> FindAll();
}
我的测试类和测试方法:
public class NewsControllerTest :TestControllerBuilder
{
private Mock<INewsRepository> mockNewsRepository;
private NewsController newsController;
[SetUp]
public void Init()
{
mockNewsRepository = new Mock<INewsRepository>();
newsController = new NewsController(mockNewsRepository.Object);
InitializeController(newsController);
}
[Test]
public void NewsController_Index()
{
// Arrange
var news = new Mock<IEnumerable<News>>();
mockNewsRepository.Setup(r => r.FindAll()).Returns(news.Object).Verifiable();
// Act
ActionResult actual = newsController.Index();
// Assert
mockNewsRepository.Verify();
actual
.AssertViewRendered()
.ForView("Index")
.WithViewData<News[]>()
.ShouldBe(news);
}
}
我的看法:
public ActionResult Index()
{
FakeNewsRepository fakeNewsRepository = new FakeNewsRepository();
IEnumerable<News> news = fakeNewsRepository.FindAll();
return View(news);
}
我需要一些关于我做的方式的指示。我的方向正确吗?我应该添加什么,我应该省略什么?我想做单元测试,我是否将它与集成测试混合在一起?任何额外的建议将不胜感激。
当我在 NUnit GUI 控制台中运行此测试时,我得到了一个错误,我不确定这意味着什么:
MyProject.Web.Tests.Controllers.NewsControllerTest.NewsController_Index:
Moq.MockVerificationException : The following setups were not matched:
INewsRepository r => r.FindAll()
【问题讨论】:
标签: asp.net-mvc nunit moq mvccontrib