我正在尝试通过我们正在运行的geb测试在网站上通过替代日期选择器。
它无法处理美国模拟测试
{{pikaday-input
value=localisedValue
format=(if format format "DD/MM/YYYY")
name=name
placeholder=localisedPlaceholder
onSelection=(action setValue)
id=inputId
classNames="date-placeholder"
tabindex=tabIndex
}}
date.js
import LocalisedTextInput from './localised-text-input';
export default LocalisedTextInput.extend({
setValue(dateValue) {
if(dateValue) {
let valueFormat = this.get('valueFormat') ? this.get('valueFormat') : 'YYYY-MM-DD';
if(valueFormat !== 'date') {
dateValue = window.moment(dateValue).format(valueFormat);
}
else {
dateValue = window.moment(dateValue);
}
}
this.set('localisedValue', dateValue);
}
});
和测试
def "Agenda Day renders correctly in the US"() {
given:
bootstrapPublishedTestEvent()
and:
def page = asyncTo EditAgendaPage, siteUnderTest
when:
page.mockTimeZone(420)
page.addDay('20/02/2016', 'Day 1')
then:
page.days*.date == ["20/02/2016"]
}
当我注释掉page.mockTimeZone(420)时-测试通过。
mockTimeZone正在使用TimeShift.js库
Date = TimeShift.Date;
TimeShift.setTimezoneOffset(420);
存在一个错误,即如果服务器中的日期为31/12/2019-在英国时区中是正确的-但在美国时区中则显示为30/12/2019