量角器:检查数据按日期排序

时间:2015-01-05 14:53:42

标签: javascript angularjs testing protractor end-to-end

我需要检查返回的数据是按日期排序的。这就是我写作的方式:

it('should be sorted by date', function() {
    element.all(by.repeater('users in group.users')).then(
        function(users) {
            var lastUser = users[0].element(by.id('birth-date')).getText();
            for (var i = 1; i < users.length; ++i) {
                var currentUser = users[i].element(by.id('birth-date')).getText();
                expect(moment(currentApplication).format('MMM d, YYYY HH:mm')).toBeGreaterThan(moment(lastApplication).format('MMM d, YYYY HH:mm'));
                lastUser = currentUser;
            }
        }
    )
})

返回:

Expected 'Jan 1, 2015 00:00' to be greater than 'Jan 1, 2015 00:00'.

我做错了什么? currentUser和lastUser似乎是对象而不是文本...但我不确定原因。

3 个答案:

答案 0 :(得分:8)

使用map()获取所有出生日期的列表,将字符串列表转换为日期列表,并与同一数组的排序版本进行比较:

element.all(by.id('birth-date')).map(function (elm) {
    return elm.getText().then(function (text) {
        return new Date(text);
    });
}).then(function (birthDates) {
    // get a copy of the array and sort it by date (reversed)
    var sortedBirthDates = birthDates.slice();
    sortedBirthDates = sortedBirthDates.sort(function(date1, date2) {
        return date2.getTime() - date1.getTime()
    });

    expect(birthDates).toEqual(sortedBirthDates);
});

答案 1 :(得分:2)

我对这个话题进行了一项小型研究。我的代码是:

element.all(by.id('birth-date')).map(function (elm) {
    return elm.getText();
}).then(function (birthDates) {
                var sortedbirthDates = birthDates.slice();                                                  
                sortedbirthDates = sortedbirthDates.sort(function compareNumbers(a, b) {                    
                                                              if (a > b) {
                                                                    return 1;
                                                              } });
        expect(birthDates).toEqual(sortedbirthDates);                                                        
    });

这里我们独立于价值类型。我们可以将它用于数字,字符串和日期。

答案 2 :(得分:0)

Expr