单元测试Moq通用类型



我正在尝试测试一个方法,该方法返回一个具有泛型类型的接口,但我总是收到以下错误:

系统。ArgumentException:回调无效。具有0个参数的方法上的安装程序无法使用不同数量的参数(1(调用回调。Moq。MethodCall。SetReturnsRespone g_ValidateCallback |27_0(代理回叫(

测试方法:

//Arrange
Mock<IClientService> clientService = new Mock<IClientService>();
clientService
.Setup(x => x.GetRabbitClient<AlertRequest>())
.Returns<IMessageQueueClient<AlertRequest>>(x => new Mock<IMessageQueueClient<AlertRequest>>().Object);
//Act
var client = clientService.Object.GetRabbitClient<AlertRequest>();
//Assert
Assert.NotNull(client);

ClientService类:

public class ClientService : IClientService
{
/// <inheritdoc />
public IMessageQueueClient<TMessage> GetRabbitClient<TMessage>() where TMessage : class, new()
{
ServiceCollection serviceCollection = new ServiceCollection();
IConfigurationRoot configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
serviceCollection.UseMessageQueueOptions<RabbitMQSettings>(configuration);
serviceCollection.UseMessageQueueFor<TMessage>();
var serviceProvider = serviceCollection.BuildServiceProvider();
return serviceProvider.GetRequiredService<IMessageQueueClient<TMessage>>();
}
}

ClientService是正在测试的类,所以你不需要模拟它

//Arrange
var clientService = new ClientService();
//Act
var client = clientService.GetRabbitClient<AlertRequest>();
//Assert
Assert.NotNull(client);

最新更新