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; }