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

时间:2015-01-07 13:25:50

标签: angularjs testing protractor end-to-end

HTML:

<div id="date"> {{date | date : 'EEE MMM d HH:mm'}} </div>

在“Tue Sep 30 10:45”的屏幕上显示

测试:

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

失败:

  

预计'2014年9月30日10:45'为'Tue Sep 30 10:45'。

2 个答案:

答案 0 :(得分:1)

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

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);
});

如果您想要另外检查格式,您可以深入了解正则表达式的精彩世界,或者只使用moment.js库:

element(by.id('date')).getText().then(function (value) {
    expect(moment(value, ["EEE MMM d HH:mm"]).isValid()).toBe(true);
}

答案 1 :(得分:0)

https://momentjs.com/这是一个非常好的库,有助于根据所需格式更改日期值

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();                         

angular.mock.TzDate是angular的原生替代品。这是来自角度模拟的帮手,真正安全地保护您的测试不受系统时区或任何其他依赖性的影响

https://docs.angularjs.org/api/ngMock/type/angular.mock.TzDate

这适用于茉莉花或摩卡咖啡,可以用量角器吟唱