asp.net - 如何在 asp.net-mvc 单元测试中生成 View ?

标签 asp.net asp.net-mvc unit-testing

我试图在单元测试中生成 View ,但我无法绕过缺少的 VirtualPathProvider。大多数 View 引擎使用 VirtualPathProviderViewEngine 基类从当前 HostingEnvironment 获取提供程序。

protected VirtualPathProvider VirtualPathProvider {
    get {
        if (_vpp == null) {
            _vpp = HostingEnvironment.VirtualPathProvider;
        }
        return _vpp;
    }
    set {
        _vpp = value;
    }
}

在单元测试中没有 HostingEnvironment,即使我创建一个也没有当前的 VirtualPathProvider。

如何解决这个问题?我必须创建自定义 FakeWebFormViewEngine 吗?

最佳答案

VS Team System 2010 中提供了适合您尝试执行的验收测试的功能。正如 Gregory A Beamer 所提到的,MVC 的单元测试是对 Controller 进行的。您还可以根据您实现模型的方式来测试模型。

这就是引起很多争议的地方。有些人将模型视为业务实体,而我将它们视为特定于 View 的模型的表示。更多的是 View 模型。由于我的模型中没有真正的功能,因此我不必对其进行测试。我在 MVC 之外测试我的 DAL(业务逻辑层)。 MVC 实际上是表示层的一部分。它是您的演示文稿的分层,而不是您的应用程序。您仍然对应用程序进行分层。

就单元测试而言, Controller 是您测试的地方。如果有需要测试的方法,您可以测试您的模型。至于 View ,它们由用户或通过像 Watin 这样的自动化测试来接受测试。

关于asp.net - 如何在 asp.net-mvc 单元测试中生成 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/324492/

相关文章:

javascript - Jasmine 是否支持带有 =>(箭头)的 javascript

asp.net - 有谁知道 RC1 中 ASP.NET MVC 中的 RenderAction HtmlHelper 位于何处

c# - `ReadAsAsync<string>` 和 `ReadAsStringAsync` 应该用来做什么?

javascript - 如何在MVC中为aspx页面添加Js文件

c# - Web 管理面板作为独立程序集

javascript - 无法将ajax成功的结果设置为mvc中的div html

javascript - JsPsych 这些是什么样的单元测试? JavaScript

unit-testing - 让 'go test -run <case>' 成功为 'go test' 的一般规则是什么?

javascript - 保存给定 URL 中的图像并在 JavaScript 中打印

asp.net - 无法建立连接,因为目标机器主动拒绝