1

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

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

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

4

1 回答 1

0

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

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

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

于 2012-08-02T14:02:00.050 回答