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