1
我正在使用ASP.NET MVC 2,NUnit,Moq和MVC Contrib。我曾经写过我的第一个单元测试,并且有几个关于这个测试的问题。我的场景是我有一个索引视图。在这个视图中,我有一个显示所有新闻项目的网格。指针需要在NUnit和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控制台,然后我得到一个错误回来,I'mnot知道这意味着什么:
MyProject.Web.Tests.Controllers.NewsControllerTest.NewsController_Index:
Moq.MockVerificationException : The following setups were not matched:
INewsRepository r => r.FindAll()
在你的代码中,你有一个名为_sut的控制器的变量名。你为什么这么称呼它? – 2010-12-04 13:19:12