Ich habe Probleme beim Schreiben eines Unit-Tests für eine meiner Controller-Aktionen. Hier sind die Details.
Diese Ansicht ist stark typisiert:
Inherits="System.Web.Mvc.ViewPage<IEnumerable<Request>>"
Hier ist die Methode in dem zu testenden Controller:
// GET: /Request/List
public ActionResult List()
{
return View("List",
requestRepository.GetAll(User.Id).OrderByDescending(x => x.Id));
}
Hier ist der Auszug aus dem Test (nUnit, MOQ), der mir Probleme bereitet:
//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>>());
Die ersten drei Setup-Anweisungen werden wegen eines zweideutigen Aufrufs nicht kompiliert:
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>>)
Das vierte Programm wird kompiliert, löst aber diesen Fehler aus, wenn es die Return-Anweisung in der Controller-Aktion erreicht:
InnerException {"Value cannot be null.\r\nParameter name: source"}
System.Exception {System.ArgumentNullException}
Ich glaube nicht, dass es relevant ist, aber es gibt zwei Überladungen der Methode, GetAll() und GetAll(int UserId). Ich bin sicher, es hat etwas mit dem OrderBy auf der Liste zu tun, aber ich bin ziemlich wackelig auf die Func Konzepte. Vielen Dank für Ihre Hilfe!