我对单元测试和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'似乎完美地完成了这项工作!谢谢。 – 2013-05-13 22:31:23