How to write Testcases with ServiceProvider.GetKeyedService method in .Net 8?

DI Registeration
services.AddKeyedTransient<IReceivableDocument,BuyerReceivableDocumentStrategy>(ReceivableCompanyType.Buyer); services.AddKeyedTransient<IReceivableDocument,AuctionReceivableDocumentStrategy>(ReceivableCompanyType.Auction);

Class using Service
public class TestReceivableCommandHandler(IServiceProvider receivableDocumentResolver) : IRequestHandler<CreateReceivableCommand, Result<Unit, ValidationException>> { public async Task<Result<Unit, ValidationException>> Handle(CreateReceivableCommand request, CancellationToken cancellationToken) { var receivableStrategy = receivableDocumentResolver.GetRequiredKeyedService<IReceivableDocument>( (ReceivableCompanyType)request.CustomerTypeID); return Result<Unit, ValidationException>.SucceedWith(Unit.Value); } }
While running unit test cases, I am getting below error It seems we can not moq Extension methods. if it is case, how we can unit test any KeyedService registration?

Unsupported expression: a => a.GetKeyedService<IReceivableDocument>((object)It.IsAny<ReceivableCompanyType>())
Extension methods (here: ServiceProviderKeyedServiceExtensions.GetKeyedService) may not be used in setup / verification expressions.
Was this page helpful?