创建或获取特定的SPTimeZone实例

时间:2015-05-22 07:48:43

标签: c# unit-testing sharepoint sharepoint-2013

创建var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.reverse(); // Mango,Apple,Orange,Banana 的特定实例的最方便方法是:

Microsoft.SharePoint.SPTimeZone

这个黑客是我能得到的最好的......

这对我来说尤其是一个问题,因为我想模拟这部分代码进行单元测试,并强制它始终返回UTC。属性SPTimeZone utc = SPRegionalSettings.GlobalTimeZones .OfType<SPTimeZone>() .FirstOrDefault(tz => tz.Information.Bias == 0 && tz.Information.DaylightBias == 0); 似乎取决于GlobalTimeZones或实际请求 - 我在单元测试中没有的先决条件......

N.B:我知道有HttpContext.Current,但第三方议会迫使我使用SPTimeZone ......

1 个答案:

答案 0 :(得分:5)

为了停止讨论,我决定最终自己回答这个问题。

评论中有几个非常有用的解决方案,我想在这个简短的回答中收集:

  • 介绍门面/适配器
  • MS Fakes或其他框架
    • 虚假访问SPTimeZone
    • 创建一个假的HttpContext
  • 使用上面问题中描述的黑客...

我本人决定使用MSFakes来填充整个第三方电话(因为我不想测试它的行为)并且用来填充我在我使用的SPTimeZone的所有属性方法。不幸的是,介绍适配器对我来说不是一个选择,因为我必须保留(内部)API。