thegautamnayak
thegautamnayak

Reputation: 307

Automapper mocking

I am using Automapper and Unity DI in my webapi. How can I write Automapper so that i can mock it for my unit testing? I am using Automapper 7.0

public class AutomapperConfiguraiton: Profile
{           
 public static void Configure()
 {
  Mapper.Initialize(cfg =>{cfg.CreateMap<A,B>();});
 }
}

public class Registries
{
  public static UnityContainer GetContainer()
  {
    var container = new UnityContainer();
    container.RegisterType<IABC, ABC>();
  }
}

Webapiconfig.cs

public static class WebApiConfig
{
 public static void Register(HttpConfiguration config)
 {
  AutomapperConfiguration.Configure();
  var container = Registries.GetContainer();
}
}

Upvotes: 1

Views: 152

Answers (1)

thegautamnayak
thegautamnayak

Reputation: 307

Use Instance api of automapper.

public class AutomapperConfiguration : Profile
{
        public static MapperConfiguration Get()
        {
            return new MapperConfiguration(cfg =>
             {Mapper.Initialize(cfg =>{cfg.CreateMap<A,B>();});
             }
         }
}

In Registries.cs

public class Registries
{
  public static UnityContainer GetContainer(MapperConfiguration config)
  {
    var container = new UnityContainer();
    container.RegisterInstance<IMapper>(new Mapper(config), new 
     ContainerControlledLifetimeManager());
  }
}

In Webapiconfig.cs

public static class WebApiConfig
{
 public static void Register(HttpConfiguration config)
 {
  var automapperConfig = AutomapperConfiguration.Get();
  var container = Registries.GetContainer(automapperConfig);
 }
}

Upvotes: 1

Related Questions