Xunit项目依赖注入

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

我有一个奇怪的问题。我正在尝试将 DI 用于我的 Xunit 项目,这样我就可以注入两个服务。

例子:

 public class Users_AddOrUpdateUsers_Should
    {
        public Users_AddOrUpdateUsers_Should(ICloudGraphServiceClient cloudGraphServiceClient, IHttpDevOpsServiceClient httpDevOpsServiceClient)
        {
            this._cloudGraphServiceClient = cloudGraphServiceClient;
            this._httpDevOpsServiceClient = httpDevOpsServiceClient;
        }

        [Fact]
        [Trait("Category", "WorkflowTest")]
        public async Task ReturnCorrectResult_WhenInputIsValid()
        {
            //Test Logic
        }
 
        private readonly ICloudGraphServiceClient _cloudGraphServiceClient;
        private readonly IHttpDevOpsServiceClient _httpDevOpsServiceClient;
    }

目前,我有一个名为

UserManagement.Tests
的项目(
Users_AddOrUpdateUsers_Should
所在的位置),它引用了
UserManagement
项目。在
UserManagement
的Startup中,我为两个服务添加了Singelton:

public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            // Rest of the code

            builder.Services.AddSingleton<IHttpDevOpsServiceClient, HttpDevOpsServiceClient>();
            builder.Services.AddSingleton<ICloudGraphServiceClient, CloudGraphServiceClient>();
        }
    }

当我尝试以这种方式使用 DI 时,它抛出异常:

以下构造函数参数没有匹配的夹具数据:ICloudGraphServiceClient cloudGraphServiceClient, IHttpDevOpsServiceClient httpDevOpsServiceClient

我尝试使用

IClassFixture<ICloudGraphServiceClient>, IClassFixture<IHttpDevOpsServiceClient>
,但它抛出这个异常:

System.AggregateException:发生一个或多个错误。 (夹具类型“AzureGraph.ICloudGraphServiceClient”只能定义一个公共构造函数。)(夹具类型“Clients.IHttpDevOpsServiceClient”只能定义一个公共构造函数。)(以下构造函数参数没有匹配的夹具数据:ICloudGraphServiceClient cloudGraphServiceClient , IHttpDevOpsServiceClient httpDevOpsServiceClient)

有什么解决问题的想法吗?

c# .net-core dependency-injection xunit
© www.soinside.com 2019 - 2024. All rights reserved.