可测试的DotNetNuke模块,其中调用EditUrl或NavigateUrl

时间:2012-08-01 21:29:35

标签: unit-testing tdd dotnetnuke dotnetnuke-module

我正在使用WebFormsMvp框架在开发DNN模块(DNN 6.1)时执行TDD。

我正在关注我能找到的最新教程,但是遇到了DNN的ModuleInstanceContext类的问题。例如,如果我尝试在演示者中调用ModuleContext.EditUrl,则单元测试失败(运行模块为真实不会失败)因为ModuleInstanceContext具有解析为HttpContext的具体实例和/或想要进行实际Db调用的依赖项(以获取PortalAlias等)。

当需要调用ModuleInstanceContext上的方法时,DNN社区中是否有最佳实践进行单元测试?

1 个答案:

答案 0 :(得分:0)

在这些情况下,我创建了一个NavigationService类,我使用演示者的构造函数中的上下文进行初始化。例如:

public MyPresenter(IMyView view) : this(view, null) {}
internal MyPresenter(IMyView view, INavService navService) {
    this.navService = navService ?? new DnnNavService(this.ModuleContext);
}

如果我需要从导航服务访问查询字符串,它在构造函数中尚未初始化,所以我传入Lazy<NameValueCollection>指向它。