using System; using System.Reflection; using AutoFixture; using AutoFixture.Xunit2; using Elsa.Testing.Shared.AutoFixture.Behaviors; using Elsa.Testing.Shared.AutoFixture.SpecimenBuilders; namespace Elsa.Testing.Shared.AutoFixture.Attributes { /// /// Customizes the parameter so that the /// created by Moq will resolve services of the appropriate type, creating /// them using Autofixture. /// /// public class WithAutofixtureResolutionAttribute : CustomizeAttribute { public override ICustomization GetCustomization(ParameterInfo parameter) => new AutofixtureServiceProviderCustomization(); class AutofixtureServiceProviderCustomization : ICustomization { public void Customize(IFixture fixture) { var behavior = BehaviorFactory.GetPostprocessingBehavior(AutofixtureResolutionServiceProviderSpecimenBuilder.AddAutofixtureResolution); fixture.Behaviors.Add(behavior); } } } }