У меня проблемы с написанием юнит-теста для одного из моих действий контроллера. Вот подробности.
Это представление строго типизировано:
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.\r\nParameter name: source"}
System.Exception {System.ArgumentNullException}
Я не думаю, что это актуально, но есть две перегрузки метода, GetAll () и GetAll (int UserId). Я уверен, что это что-то делает для OrderBy в Списке, но я довольно шаткий в концепциях Func. Спасибо за вашу помощь!