2015-01-05 18 views
5

返されるデータは日付でソートされていることを確認する必要があります。これは私がそれを書いている方法です:分度器:データを日付順に並べ替えます

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はテキストの代わりにオブジェクトであるように見えますが、私はなぜそれがわかりません。

答えて

7

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

TypeError:オブジェクト[オブジェクトオブジェクト]にメソッド 'all'がありません – Jason

+0

@Jason oops、typo、fixed :) – alecxe

+0

ありがとう。私は新しいので、構文は私のために重要です:)もう1つ、これを今取得:TypeError:オブジェクト[オブジェクトオブジェクト]にはメソッド 'ソート'がありません – Jason

1

私は、このトピックの小さな研究を集約し。私のコードは:

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

ここでは値の種類に依存しません。数字、文字列、日付に使用できます。

関連する問題