Angularjs 量角器:测试各种格式的日期文本

Angularjs 量角器:测试各种格式的日期文本,angularjs,testing,protractor,end-to-end,Angularjs,Testing,Protractor,End To End,HTML: 在以下情况下失败: 预计“2014年9月30日10:45”为“9月30日星期二10:45” 我认为您需要比较Date对象,而不是字符串: expect(element(by.id('date')).getText()).toBe("Tue Sept 30 10:45"); 如果您想进一步检查格式,可以深入了解正则表达式的奇妙世界,或者只使用库: 这是一个非常好的库,可以帮助根据所需格式更改日期值 element(by.id('date')).getText().then(func

HTML:

在以下情况下失败:

预计“2014年9月30日10:45”为“9月30日星期二10:45”


我认为您需要比较
Date
对象,而不是字符串:

expect(element(by.id('date')).getText()).toBe("Tue Sept 30 10:45");

如果您想进一步检查格式,可以深入了解正则表达式的奇妙世界,或者只使用库:

这是一个非常好的库,可以帮助根据所需格式更改日期值

element(by.id('date')).getText().then(function (value) {
    expect(moment(value, ["EEE MMM d HH:mm"]).isValid()).toBe(true);
}
angular.mock.TzDate是angular的本机替代品。这是angular Mock的一个助手,真正保护您的测试不受系统时区或任何其他依赖项的影响


这对于茉莉花或摩卡咖啡来说很好,可以用量角器将其加入,谢谢,但我想比较一下数据值和格式。如果有人将格式更改为其他格式,测试将失败。这就是为什么我试着用字符串来做。第一个选项很奇怪。它返回:“预计日期(2001年9月30日星期日10:45:00 GMT+0100(英国夏令时))”屏幕上显示2014…为什么显示2001?数据库中的日期是2014年,当我将html更改为显示yyyy时是2014年。我认为这是因为它不显示年份,所以“getText()”无法正常工作。@Jason好的,已更新-将预期日期的年份设置为解析日期的年份(我认为在这里可以,因为年份并不重要)。请查收。
element(by.id('date')).getText().then(function (value) {
    var dateValue = new Date(value);
    var expectedDateValue = new Date(dateValue.getFullYear(), 9, 30, 10, 45, 0);

    expect(dateValue).toBe(expectedDateValue);
});
element(by.id('date')).getText().then(function (value) {
    expect(moment(value, ["EEE MMM d HH:mm"]).isValid()).toBe(true);
}
moment().format('MMMM Do YYYY, h:mm:ss a'); // September 1st 2017, 6:56:48 pm
moment().format('dddd');                    // Friday
moment().format("MMM Do YY");               // Sep 1st 17
moment().format('YYYY [escaped] YYYY');     // 2017 escaped 2017
moment().format();