У меня возникли проблемы с написанием модульного теста для одного из моих действий с контроллером. Вот подробности.
Этот вид строго типизирован:
Inherits="System.Web.Mvc.ViewPage<IEnumerable<Request>>"
Вот метод тестируемого контроллера:
// GET: /Request/List
public ActionResult List()
{
return View("List",
requestRepository.GetAll(User.Id).OrderByDescending(x => x.Id));
}
Вот отрывок из теста (nUnit, MOQ), который дает мне проблемы:
//mockRequestRepository
// .Setup(repo => repo.GetAll(It.IsAny<int>()))
// .Returns(List<Request>());
//mockRequestRepository
// .Setup(repo => repo.GetAll(It.IsAny<int>()))
// .Returns(IList<Request>());
//mockRequestRepository
// .Setup(repo => repo.GetAll(It.IsAny<int>()))
// .Returns(IEnumerable<List<Request>>());
mockRequestRepository
.Setup(repo => repo.GetAll(It.IsAny<int>()))
.Returns(It.IsAny<List<Request>>());
Первые три инструкции установки не будут скомпилированы из-за неоднозначного вызова:
Moq.Language.Flow.IReturnsResult<Core.Repositories.IRequestRepository>
Returns(System.Collections.Generic.IList<Core.Entities.Request>
(in interface IReturns<IRequestRepository, IList<Request>>)
Moq.Language.Flow.IReturnsResult<Core.Repositories.IRequestRepository>
Returns(System.Func<System.Collections.Generic.IList<Core.Entities.Request>>
(in interface IReturns<IRequestRepository, IList<Request>>)
Четвертый будет компилировать, но выдает эту ошибку, когда он достигает оператора return в действии контроллера:
InnerException {"Value cannot be null.
Parameter name: source"}
System.Exception {System.ArgumentNullException}
Я не думаю, что это актуально, но есть два перегрузки метода: GetAll () и GetAll (int UserId). Я уверен, что у него есть что-то, чтобы сделать OrderBy в Списке, но я довольно шаткий в концепциях Func. Спасибо за вашу помощь!
c#,asp.net-mvc,unit-testing,moq,