4

我正在为 Backbone.Collection 编写规范。
我想使用 jasmine 在单元测试 javascript 中检查以下语句:

should the models be ordered by starting with the most recent.

模型中要检查的关键值是id(整数)。

例如,如果集合如下所示,则对其进行排序:

[
{id: 5, ….}, // the most recent
{id: 2, ...},
{id: 1, ...}
]

我的问题是:
1)有没有茉莉花方法来做这种检查?
2)如果没有,用javascript制作它的最佳方法是什么?也许使用一些像下划线这样的库。

4

2 回答 2

2

你可以做一个 for 循环,不确定是否有内置的检查你想要什么:

    var max = arr[0].id;
    var sorted = true;

    for(var i = 1; i < arr.length; i++) {
       if(max > arr[i].id) {
           sorted = false; break;
       }
    }

    alert(sorted);
于 2012-06-04T09:14:56.857 回答
0

大概,您已经在您的收藏中设置了 a comparator,这将使您的收藏保持有序。

在您的测试中,乱序创建 3 个项目,假设:

collection = new MyCollection();
collection.add({id: 1, bar: 'foo1'});
collection.add({id: 5, bar: 'foo5'});
collection.add({id: 3, bar: 'foo3'});

然后确保比较器工作,变得很简单:

expect(_.pluck(collection.models, 'id')).toEqual([5, 3, 1]);
于 2012-06-06T16:55:59.017 回答