创建或获取特定的 SPTimeZone 实例
Create or get specific SPTimeZone instance
创建 Microsoft.SharePoint.SPTimeZone
的特定实例的最方便方法是什么,如下所示:
SPTimeZone utc = SPRegionalSettings.GlobalTimeZones
.OfType<SPTimeZone>()
.FirstOrDefault(tz => tz.Information.Bias == 0
&& tz.Information.DaylightBias == 0);
这是我能得到的最好的技巧吗...
这对我来说尤其是个问题,因为我想模拟这部分代码以进行单元测试并强制它始终为 return UTC。 属性 GlobalTimeZones
似乎取决于 HttpContext.Current
或实际请求 - 我在单元测试中没有的先决条件...
N.B:我知道有 System.TimeZoneInfo
但第三方组件迫使我使用 SPTimeZone ...
为了停止讨论,我决定最终自己回答这个问题。
评论中有几个非常有用的解决方案,我想收集在这个简短的回答中:
- 引入外观/适配器
- MS Fakes 或其他框架
- 对 SPTimeZone 的虚假访问
- 创建一个假的 HttpContext
- 使用上面问题中描述的技巧...
我自己决定使用 MSFakes 来填充整个第 3 方调用(因为无论如何我都不想测试它的行为)并填充我在我的方法中使用的 SPTimeZone 的所有属性。不幸的是,引入适配器对我来说不是一个选择,因为我必须保留(内部)API.
创建 Microsoft.SharePoint.SPTimeZone
的特定实例的最方便方法是什么,如下所示:
SPTimeZone utc = SPRegionalSettings.GlobalTimeZones
.OfType<SPTimeZone>()
.FirstOrDefault(tz => tz.Information.Bias == 0
&& tz.Information.DaylightBias == 0);
这是我能得到的最好的技巧吗...
这对我来说尤其是个问题,因为我想模拟这部分代码以进行单元测试并强制它始终为 return UTC。 属性 GlobalTimeZones
似乎取决于 HttpContext.Current
或实际请求 - 我在单元测试中没有的先决条件...
N.B:我知道有 System.TimeZoneInfo
但第三方组件迫使我使用 SPTimeZone ...
为了停止讨论,我决定最终自己回答这个问题。
评论中有几个非常有用的解决方案,我想收集在这个简短的回答中:
- 引入外观/适配器
- MS Fakes 或其他框架
- 对 SPTimeZone 的虚假访问
- 创建一个假的 HttpContext
- 使用上面问题中描述的技巧...
我自己决定使用 MSFakes 来填充整个第 3 方调用(因为无论如何我都不想测试它的行为)并填充我在我的方法中使用的 SPTimeZone 的所有属性。不幸的是,引入适配器对我来说不是一个选择,因为我必须保留(内部)API.