" 下面是被测 Co-6ren">
gpt4 book ai didi

c# - 使用最小起订量测试 Controller

转载 作者:太空狗 更新时间:2023-10-29 22:15:24 27 4
gpt4 key购买 nike

我在为我的 Controller 操作之一编写单元测试时遇到问题。这是详细信息。

这个 View 是强类型的:

Inherits="System.Web.Mvc.ViewPage<IEnumerable<Request>>"

下面是被测 Controller 中的方法:

    // 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>>)

第四个将编译但在到达 Controller 操作中的 return 语句时抛出此错误:

InnerException  {"Value cannot be null.\r\nParameter name: source"} 
System.Exception {System.ArgumentNullException}

我认为这无关紧要,但该方法有两个重载,GetAll() 和 GetAll(int UserId)。我确定它与 List 上的 OrderBy 有关系,但我对 Func 的概念不太确定。感谢您的帮助!

最佳答案

您还可以使用 NBuilder连同最小起订量。

_repository.Setup(rep => rep.GetAll(It.IsAny<int>()))  // <-- Moq magic
.Returns(
Builder<Request>.CreateListOfSize(10).Build() // <-- NBuilder magic
);

关于c# - 使用最小起订量测试 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/993749/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com