private static void AssertAddValidatorIsCalled <TValidator, TEntity, TProperty>(Action <IEntityValidationRuleBuilderInitial <TEntity, TProperty> > action) where TValidator : IValidator { IEntityValidationRuleBuilderInitial <TEntity, TProperty> ruleBuilder = Substitute.For <IEntityValidationRuleBuilderInitial <TEntity, TProperty> >(); ruleBuilder.WhenForAnyArgs(x => x.AddValidator(null)).Do(x => Assert.IsInstanceOf <TValidator>(x.Arg <EntityPropertyValidator>().InnerValidator)); action(ruleBuilder); ruleBuilder.ReceivedWithAnyArgs(1).AddValidator(null); }