量角器:测试各种格式的日期文本
Protractor: testing date text with various formats
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");
失败:
Expected 'Sep 30, 2014 10:45' to be 'Tue Sep 30 10:45'.
我认为您需要比较 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);
}
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 的原生替代。这是来自 angular 模拟的帮助程序,真正保护您的测试不受系统时区或任何其他依赖项的影响
https://docs.angularjs.org/api/ngMock/type/angular.mock.TzDate
这与 Jasmine 或 mocha 搭配得很好,可以用量角器敲击
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");
失败:
Expected 'Sep 30, 2014 10:45' to be 'Tue Sep 30 10:45'.
我认为您需要比较 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);
}
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 的原生替代。这是来自 angular 模拟的帮助程序,真正保护您的测试不受系统时区或任何其他依赖项的影响
https://docs.angularjs.org/api/ngMock/type/angular.mock.TzDate
这与 Jasmine 或 mocha 搭配得很好,可以用量角器敲击