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

Fra*_* P. 6 asp.net asp.net-mvc unit-testing

我试图在单元测试中生成视图,但我无法绕过丢失的VirtualPathProvider.大多数viewengines使用VirtualPathProviderViewEngine基类从当前的HostingEnvironment获取提供程序.

protected VirtualPathProvider VirtualPathProvider {
    get {
        if (_vpp == null) {
            _vpp = HostingEnvironment.VirtualPathProvider;
        }
        return _vpp;
    }
    set {
        _vpp = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Mat*_*hew 0

我也尝试这样做。不幸的是,问题不只是 VirtualPathProvider (VPP)。VPP用于将视图或部分视图映射到物理路径来确定文件的存在。不幸的是,ViewContext 以虚拟路径结束,而不是物理路径,因此当渲染视图时,Builder 使用不存在的 HostingEvnironment 的属性。

如果您使用的是带有测试功能的 Visual Studio 版本,则可以使用 Web 单元测试。这将允许您使用浏览器调用 URL,然后解析响应以检查值。