如何对TimeZones进行单元测试?

cho*_*bo2 1 asp.net-mvc nunit unit-testing moq

我想知道如何测试TimeZone逻辑?对我来说,我的时区内容用于过滤数据库中的数据(单元测试当然会被模拟并且未经过测试).

但我想测试它周围的逻辑,看看我是否给出了某些时间,它会被正确转换.

我不知道该怎么做.

Jon*_*eet 7

你的意思并不完全清楚.

您是否使用系统的当前时区?如果是这样,我建议您添加某种中间静态属性,可以仅为测试重置,以便让您在测试期间"假装"您处于不同的时区.不可否认,这意味着您必须谨慎使用该属性.

我敢说有一个Win32系统调用你可以用它来改变系统时区,但听起来有点激烈 - 很遗憾没有关于文化当前时区的概念:((有)TimeZoneInfo.Local,但是就我所见,目前还没有可以改变的方法.)

如果您没有使用本地时区,只需确保您的API获取编写测试所需的所有信息,这样您就可以确保在特定时区处理日期和时间时,您会得到正确的答案.如果它对你有用,我可以想出一些好的角落案例来测试.特别是,有些时区一年中没有当地的午夜(夏令时停止),这可能会使一些案件搞得一团糟.