创建Microsoft.SharePoint.SPTimeZone
的特定实例的最便捷方法是以下方法:
SPTimeZone utc = SPRegionalSettings.GlobalTimeZones
.OfType<SPTimeZone>()
.FirstOrDefault(tz => tz.Information.Bias == 0
&& tz.Information.DaylightBias == 0);
这是我能得到的最好的技巧吗?
这对我来说尤其是个问题,因为我想模拟这部分代码以进行单元测试,并强制其始终返回UTC。
GlobalTimeZones
属性似乎取决于HttpContext.Current
或实际请求-我在单元测试中没有的先决条件...N.B:我知道有
System.TimeZoneInfo
,但是第三方程序集迫使我使用SPTimeZone ... 最佳答案
为了停止讨论,我决定最终自己回答这个问题。
我想在简短的回答中收集一些真正有用的解决方案:
就我而言,我决定使用MSFakes来填充整个第3方 call (因为无论如何我都不想测试其行为),并填充我在方法中使用的SPTimeZone的所有属性。不幸的是,引入适配器对我来说不是一个选择,因为我必须保留(内部)API。