【问题标题】:ShimSPWeb().LocaleGet not available?ShimSPWeb().LocaleGet 不可用?
【发布时间】:2025-11-27 09:05:01
【问题描述】:

我已经开始研究 VisualStudio 2012 中的新功能,您可以在其中添加虚假的 dll 程序集以进行单元测试。 我正在使用 SharePoint 2010,现在我们都很难对依赖于 SharePoint API 的代码进行单元测试。

我为 Microsoft.SharePoint 添加了一个假程序集,它运行良好,但我需要重写方法 SPWeb.Locale。我以为这很容易。我以为会有像ShimSPWeb.LocaleGet 这样的方法,但没有。

这是我在ShimSPWeb 上关于Locale 的唯一选项

简而言之:应该有一个shimWeb.LocaleGet 可用。

【问题讨论】:

    标签: unit-testing sharepoint visual-studio-2012 microsoft-fakes shim


    【解决方案1】:

    我想通了。您可以将诊断添加到 *.fakes 设置文件。这可以在生成假程序集时启用调试输出。

    <Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
    

    当我这样做时,我得到了这个输出:

    unstubbable:方法是抽象的,不能被存根,类型 System.Globalization.CultureInfo 在目标中不可用 框架版本

    SharePoint 2010 面向 .Net 3.5 版。我的单元测试设置为目标框架.Net 4.0。 我将单元测试项目的目标更改为 3.5,重新生成了假程序集,瞧!成功了!

    【讨论】: