我有一个奇怪的问题。我正在尝试将 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)
有什么解决问题的想法吗?