Я относительно новичок в модульном тестировании и ASP.NET MVC в целом, и я пытаюсь написать свой первый модульный тест против простого действия контроллера и репозитория (как показано ниже) с использованием Moq
.Возвращение коллекции через репозиторий с использованием Moq
ISubmissionRepository.cs
public interface ISubmissionRepository
{
IList<Submission> GetRecent(int limit = 10);
}
HomeController.cs:
/* Injected using Unit DIC */
public HomeController(ISubmissionRepository submissionRepository)
{
_submissionRepo = submissionRepository;
}
public ActionResult Index()
{
var latestList = _submissionRepo.GetRecent();
var viewModel = new IndexViewModel {
NumberOfSubmissions = latestList.Count(),
LatestSubmissions = latestList
};
return View(viewModel);
}
Ниже приводится тестовый блок я пишу, однако мой издевались вызов хранилище не кажется, возвращая что-нибудь, и я понятия не имею, почему. Я правильно издеваюсь над своим репозиторием?
HomeControllerTest.cs
[Test]
public void Index()
{
IList<Submission> submissions = new List<Submission>
{
new Submission {Credit = "John Doe", Description = "Hello world", ID = 1, Title = "Example Post"},
new Submission {Credit = "John Doe", Description = "Hello world", ID = 2, Title = "Example Post"}
};
Mock<ISubmissionRepository> mockRepo = new Mock<ISubmissionRepository>();
mockRepo.Setup(x => x.GetRecent(2)).Returns(submissions);
/*
* This appears to return null when a breakpoint is set
var obj = mockRepo.Object;
IList<Submission> temp = obj.GetRecent(2);
*/
controller = new HomeController(mockRepo.Object);
ViewResult result = controller.Index() as ViewResult;
Assert.NotNull(result);
Assert.IsInstanceOf<IndexViewModel>(result);
}
'result.Model', казалось, отлично справлялся с работой! Спасибо. –