1

在编写集成测试时,我期待响应中有一个硬编码的日期。

基本上我硬编码expected date value '2020-11-10T00:00:00.000-05:00' 并运行 new GregorianCalendar(2020, 10, 10).getTime()

当我在本地放置和断言并运行它时,它通过了,但是当相同的代码被推送到竹构建服务器时,它生成的实际值是'2020-11-10T00:00:00.000Z',所以我的测试失败了。

  1. 为什么同一个 calendar.getTime 生成两个不同的时间,是因为服务器机器配置为 GMT 吗?

  2. 我可以做些什么让它们同时使用或任何其他解决方法吗?

注意:在这里将其设为字符串或比较没有时间的日期不是一个选项,因为我使用的是 Spring MockWebServiceServer,在其中我必须对 responseXML 进行硬编码并指定日期,就像在 Enum 中这样。

 REQUESTAUTOMATESETTLEMENTWORKCASE("<aut:AutomateSettlementWorkcaseRequest xmlns:aut=\"http://www.abcd.com/abcd/workflow/services/workcase/model/AutomateSettlementWorkcase_1_0_0\">" +
          "  <aut:customerAccountId>5049903033584324</aut:customerAccountId>\n" +
          "  <aut:settlementDate>2020-11-10T00:00:00.000-05:00</aut:settlementDate>\n" +
          "  </aut:AutomateSettlementWorkcaseRequest>"),
4

1 回答 1

3

输入数据中的“-5”部分将其丢弃......理想情况下,您应该在构建日历时指定时区,然后将其设置为 UTC 凌晨 5 点(例如)。基本上,2020-11-10T00:00:00.000-05:00与 是同一瞬间2020-11-10T05:00:00.000Z

现在,我们不知道保留与 UTC 的偏移是否对您很重要。如果是,您需要在日历中设置一个适当的时区 - 一个与生成输入数据的规则相同的时区。如果不是,我会使用 UTC 并适当地设置时间。

我个人建议使用Joda Time而不是- 它是一个更好Calendar的日期和时间 API。对于初学者来说,没有基于 0 的月份:)Date

于 2012-10-06T06:31:06.263 回答