Я использую 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, я получаю сообщение об ошибке и не уверен, что это значит:
MyProject.Web.Tests.Controllers.NewsControllerTest.NewsController_Index:
Moq.MockVerificationException : The following setups were not matched:
INewsRepository r => r.FindAll()