控制器私有成员绑定ninject

时间:2013-12-24 11:34:47

标签: asp.net-mvc ninject ninject.web.mvc

我有一个使用Ninject.Mvc3包的MVC应用程序以及一个NUnit测试项目。

所有控制器都继承自以下基本控制器

public class BaseController : Controller
{
    [Inject]
    protected IRepository Repository { get; set; }

    // ...
}

NinjectWebCommon.RegisterServices看起来像

private static void RegisterServices(IKernel kernel)
{
    kernel.Settings.InjectNonPublic = true;
    kernel.Bind<IRepository>().To<Repository>().InRequestScope();

    // ...
}

在运行Web项目时,绑定有效。

但是,如何在测试项目中设置Ninject内核以绑定控制器中的Repository成员?我无法弄清楚它是如何完成的,Repository成员使用来自NinjectWebCommons的内核来解析绑定。项目上的文字搜索没有给我什么。

[UPD]:

        var kernel = new StandardKernel();
        kernel.Settings.InjectNonPublic = true;
        kernel.Bind<IRepository>().To<Repository>().InRequestScope(); 
        var controller = kernel.Get<BlahBlahBlahController>();
        controller.SetFakeControllerContext();
        //...

这就是我应该如何在测试项目中设置Ninject内核。问题的第二部分对我来说仍然不清楚。

0 个答案:

没有答案