带有Ninject混淆的AutoMapper

带有Ninject混淆的AutoMapper

对于初学者,我正在使用此模块:

    public class AutoMapperModule : NinjectModule
{
    public override void Load()
    {
        Bind<ITypeMapFactory>().To<TypeMapFactory>();
        foreach (var mapper in MapperRegistry.AllMappers())
        {
            Bind<IObjectMapper>().ToConstant(mapper);
        }

        Bind<AutoMapper.ConfigurationStore>().ToSelf().InSingletonScope().WithConstructorArgument("mappers", ctx => ctx.Kernel.GetAll<IObjectMapper>());
        Bind<IConfiguration>().ToMethod(ctx => ctx.Kernel.Get<AutoMapper.ConfigurationStore>());
        Bind<IConfigurationProvider>().ToMethod(ctx => ctx.Kernel.Get<AutoMapper.ConfigurationStore>());
        Bind<IMappingEngine>().To<MappingEngine>();
    }
}

我所有的 map 都有一个引导程序类
        public static void Configure(IKernel kernel)
    {
        Mapper.Initialize(map => map.ConstructServicesUsing(t => kernel.Get(t)));
    }

我有解析器可以访问数据库,并且需要注入(inject)存储库。
它按原样工作,但我不知道如何将其与单元测试和IMappingEngine一起使用。
        public HomeController(IMappingEngine mappingEngine)
    {
        _mappingEngine = mappingEngine;
    }

_mappingEngine.Map会引发异常,因为不存在任何映射。 Mapper.Map有效。

我想念什么?如何使引导程序与单元测试一起使用,以便解析器中的存储库使用伪造/模拟存储库?

最佳答案

尝试更改映射的绑定(bind)。

Bind<IMappingEngine>().ToMethod(ctx => Mapper.Engine);

关于ninject - 带有Ninject混淆的AutoMapper,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10938740/

10-11 04:09