【发布时间】:2009-06-14 20:57:50
【问题描述】:
我在为我的控制器操作之一编写单元测试时遇到问题。这是详细信息。
这个视图是强类型的:
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>>());
前三个 setup 语句由于调用不明确而无法编译:
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)。我确信它与 List 上的 OrderBy 有关系,但我对 Func 概念很不满意。感谢您的帮助!
【问题讨论】:
标签: c# asp.net-mvc unit-testing moq