public static SubstituteForBuilder <T> InjectProperties <T>(this SubstituteForBuilder <T> builder) where T : class => builder.ConfigureSubstitute((t, ctx) => { ctx.InjectUnsetProperties(t); AutoPropertyInjectorMockHandler.Instance.OnMockCreated(t, typeof(T), ctx, builder.Context); });
private SubstituteForBuilder <TService> CreateSubstituteForBuilder <TService>(Func <TService> factory, bool isSubstituteFor) where TService : class { if (_substituteForRegistrations.TryGetValue(typeof(TService), out var result)) { var previousBuilder = (SubstituteForBuilder <TService>)result; if (previousBuilder.IsSubstituteFor != isSubstituteFor) { throw new InvalidOperationException("Cannot change a service registration between SubstituteFor and SubstituteForPartsOf"); } return(previousBuilder); } var registration = _builder.Register(_ => factory()) .As <TService>() .InstancePerLifetimeScope(); var builder = new SubstituteForBuilder <TService>(this, registration, isSubstituteFor); _substituteForRegistrations.Add(typeof(TService), builder); if (_options.AutoInjectProperties) { builder.InjectProperties(); } return(builder); }
/// <summary> /// Configures the auto-generated instance of <typeparamref name="T"/> to not call the base method for any of the methods. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="builder"></param> /// <returns></returns> public static SubstituteForBuilder <T> DoNotCallBase <T>(this SubstituteForBuilder <T> builder) where T : class => builder.ConfigureSubstitute(t => { var router = SubstitutionContext.Current.GetCallRouterFor(t); router.CallBaseByDefault = false; });