J'ai des difficultés à écrire un test unitaire pour l'une de mes actions de contrôleur. Voici les détails.Utilisation de MOQ pour tester le contrôleur
Ce point de vue est fortement typée:
Inherits="System.Web.Mvc.ViewPage<IEnumerable<Request>>"
est la méthode Ici, dans le contrôleur en cours de test:
// GET: /Request/List
public ActionResult List()
{
return View("List",
requestRepository.GetAll(User.Id).OrderByDescending(x => x.Id));
}
Voici l'extrait du test (nUnit, QMC) qui me donne problèmes:
//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>>());
Les trois premières instructions d'installation ne compileront pas en raison d'une ambiguïté invocation:
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>>)
La quatrième compilera mais jette cette erreur lorsqu'il atteint l'instruction de retour dans l'action du contrôleur:
InnerException {"Value cannot be null.\r\nParameter name: source"}
System.Exception {System.ArgumentNullException}
Je ne pense pas qu'il est pertinent, mais il y a deux surcharges sur la méthode, GetAll() et GetAll (int UserId). Je suis sûr qu'il a quelque chose à faire le OrderBy sur la liste, mais je suis assez fragile sur les concepts Func. Merci de votre aide!