如何使用 x-unit 方法 ASP Web API .Net 6 调用模拟框架中的服务类?

问题描述 投票:0回答:1

我们将使用 .NET 6 在 ASP.NET Web API 中执行单元测试。我们正在尝试使用 Moq 框架和 xUnit 测试方法进行单元测试。首先,我们下载 Moq 包。接下来,我们使用 Moq 方法创建一个服务类对象。有了这个对象,我们使用 Returns 方法设置控制器函数。然后,我们利用控制器对象,合并之前创建的 Moq 对象,以获得我们想要的结果。

问题:UserService 中添加了 dbcontext 作为依赖注入。当从该服务调用方法“GetUsers”时,dbcontext 为空。

控制器:用户 服务类:用户服务 接口:IUserService

var result = new BaseResponseModel()
{
    StatusCode = (int)ResponseType.Success,
    Data = new UserModel
    {
        Id = 10002
    },
    Message = null
};

var userrepo = new Mock<UserService>();
userrepo.Setup(x => x.GetUsers(It.IsAny<long>())).ReturnsAsync(result);
var controller = new UserController(userrepo.Object);
BaseResponseModel response = await controller.GetEmployerUserList(10002);

dB 上下文应该被初始化,我应该能够数据库。

unit-testing .net-6.0 moq xunit web-api-testing
1个回答
0
投票

听起来好像

UserService
是一个基类,它接受一些
dbcontext
作为构造函数参数。如果是这样,请尝试将其作为构造函数参数传递:

var userrepo = new Mock<UserService>(dbcontext);

您可能还想尝试在

CallBase = true
上设置
userrepo
。我不能说它是否会解决这个问题,因为我没有从OP那里获得足够的信息。

© www.soinside.com 2019 - 2024. All rights reserved.