我有一个使用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内核。问题的第二部分对我来说仍然不清楚。