如何使用Ext JS格式方法在单元测试期间格式化日期?

时间:2018-01-05 09:30:12

标签: javascript unit-testing date testing extjs

我正在尝试为下面的方法编写适当的单元测试。我正在尝试在格式化日期内测试断言。因此尝试在断言中使用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"

2 个答案:

答案 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"
};