using System; using AutoFixture.Kernel; using Moq; namespace Elsa.Testing.Shared.AutoFixture.SpecimenBuilders { /// /// Creates a mock which gets services /// by resolving them from Autofixture. /// public class AutofixtureServiceProviderSpecimenBuilder : ISpecimenBuilder { public object Create(object request, ISpecimenContext context) { if(request.IsAnAutofixtureRequestForType()) return GetServiceProvider(context); return new NoSpecimen(); } static object GetServiceProvider(ISpecimenContext context) { var provider = new Mock(); provider.Name = $"Autofixture_{nameof(IServiceProvider)}-{Guid.NewGuid()}"; provider .Setup(x => x.GetService(It.IsAny())) .Returns((Type t) => context.Resolve(t)); return provider.Object; } } }