public object Resolve(
            CreationContext context,
            ISubDependencyResolver parentResolver,
            ComponentModel model,
            DependencyModel dependency)
        {
            MockingStrategy strategy = _relatedRepository.GetStrategyFor(dependency);

            if (strategy.Instance != null)
            {
                return(strategy.Instance);
            }
            if (strategy.Mock == MockingStrategyType.Mock)
            {
                //if a dependencywas already registered in the main controller, go and use it
                var    registration = this._relatedRepository.Kernel.GetHandler(dependency.TargetType);
                object resolvedDependencyObject;
                if (registration == null)
                {
                    resolvedDependencyObject = MockRepository.GenerateStub(dependency.TargetType);
                }
                else
                {
                    resolvedDependencyObject = _relatedRepository.Resolve(dependency.TargetType);
                }
                _relatedRepository.OnMockCreated(resolvedDependencyObject, dependency.DependencyKey);
                return(resolvedDependencyObject);
            }
            if (strategy.Mock == MockingStrategyType.Resolve)
            {
                return(_relatedRepository.Resolve(dependency.TargetType));
            }

            return(null);
        }
        public MockingStrategy GetStrategyFor(Castle.Core.DependencyModel model)
        {
            MockingStrategy strategy = _strategies
                                       .Where(kvp => kvp.Key.IsValidFor(model))
                                       .Select(kvp => kvp.Value)
                                       .FirstOrDefault();

            return(strategy ?? MockingStrategy.Default);
        }
 public void SetStrategyForDependencyName(string p, MockingStrategy strategy)
 {
     _strategies.Add(new StrategyKey(null, p), strategy);
 }
 void IAutoMockingRepository.AddStrategy(Type serviceType, MockingStrategy strategy)
 {
     _strategies[new StrategyKey(serviceType, String.Empty)] = strategy;
 }