I'm trying to test a method which returns an Interface with a generic type but I always get this error:
System.ArgumentException : Invalid callback. Setup on method with 0 parameter(s) cannot invoke callback with different number of parameters (1). at Moq.MethodCall.SetReturnsResponse g__ValidateCallback|27_0(Delegate callback)
Test method:
//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 class:
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>>(); } }