我正在尝试为下面的方法编写适当的单元测试。我正在尝试在格式化日期内测试断言。因此尝试在断言中使用Ext.Date.format方法,但它返回为失败。
如何将给定和预期日期格式化为d.m.Y
? (我不允许自己改变方法!)
dateAdd: function (aDate, aInterval, aValue) {
var me = this;
aDate = aDate || me.today();
aInterval = aInterval || Ext.Date.DAY;
aValue = aValue || 1;
return Ext.Date.add(aDate, aInterval, aValue);
},
和测试断言;
t.describe('dateAdd() method', function(t) {
t.it('should interval the given date', function(t) {
t.expect(MyApp.dateAdd(new Date(Ext.Date.format('01.01.2018', 'd.m.Y')), Ext.Date.DAY, 1)).toBe('02.01.2018');
});
});
// Result:
// Failed assertion `expect(got).toBe(need)` at line 64 of 01-unit-tests.js
// Got : "Invalid Date"
// Need : "02.01.2018"
答案 0 :(得分:1)
根据ExtJs文档,Ext.Date.add返回一个Date对象,您可以将其与String进行比较。 当你用一个Date对象交换String时,它应该可以工作。
t.describe('dateAdd() method', function(t) {
t.it('should interval the given date', function(t) {
var expectedDate = Ext.Date.format('02.01.2018', 'd.m.Y');
t.expect(MyApp.dateAdd(new Date(Ext.Date.format('01.01.2018', 'd.m.Y')), Ext.Date.DAY, 1)).toBe(expectedDate);
});
});
答案 1 :(得分:1)
你应该检查你的日期模式,我使用这些模式作为指南:
Ext.Date.patterns =
{
ISO8601Long:"Y-m-d H:i:s",
ISO8601Short:"Y-m-d",
ShortDate: "n/j/Y",
LongDate: "l, F d, Y",
FullDateTime: "l, F d, Y g:i:s A",
MonthDay: "F d",
ShortTime: "g:i A",
LongTime: "g:i:s A",
SortableDateTime: "Y-m-d\\TH:i:s",
UniversalSortableDateTime: "Y-m-d H:i:sO",
YearMonth: "F, Y"
};