在数据库中以 UTC 格式保存的 Behat 测试用例中断言日期时间
Assert datetime in Behat test case saved in UTC format in database
我已经创建了 Behat 测试用例来断言日期时间。
日期时间已以 UTC 格式存储在我的数据库中。因此,使用 IntlDateFormatter 函数根据所选语言环境(如 en、de 或 fr)进行转换。
我面临的问题是 behat 测试用例在我的本地机器上工作正常但在服务器上我必须断言日期时间与数据库值 UTC 格式相同。
例如保存的值为 2016-01-01 00:00:00。
从 UTC 转换回 php 值后,网站上显示的值为“01-01-2016 01:00”。
关于使用“01-01-2016 01:00”的本地断言。
但在服务器上它使用“01-01-2016 00:00”而不是“01-01-2016 01:00”。
谁能告诉我为什么测试用例因日期时间断言而失败?
您在创建日期时似乎忽略了时区设置。
您需要在所有创建日期的地方(您的代码和行为测试)明确定义时区,或者确保您的所有环境都具有相同的时区设置(对于 php 和可能是数据库)。
第二个选项对您来说可能更容易、更快捷。第一个更防弹。
我已经创建了 Behat 测试用例来断言日期时间。 日期时间已以 UTC 格式存储在我的数据库中。因此,使用 IntlDateFormatter 函数根据所选语言环境(如 en、de 或 fr)进行转换。
我面临的问题是 behat 测试用例在我的本地机器上工作正常但在服务器上我必须断言日期时间与数据库值 UTC 格式相同。
例如保存的值为 2016-01-01 00:00:00。 从 UTC 转换回 php 值后,网站上显示的值为“01-01-2016 01:00”。
关于使用“01-01-2016 01:00”的本地断言。 但在服务器上它使用“01-01-2016 00:00”而不是“01-01-2016 01:00”。
谁能告诉我为什么测试用例因日期时间断言而失败?
您在创建日期时似乎忽略了时区设置。
您需要在所有创建日期的地方(您的代码和行为测试)明确定义时区,或者确保您的所有环境都具有相同的时区设置(对于 php 和可能是数据库)。
第二个选项对您来说可能更容易、更快捷。第一个更防弹。