Jasmine Test sort()localecompare()

时间:2018-06-12 15:25:38

标签: javascript jasmine karma-jasmine

如何为以下代码编写茉莉花测试:



var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
items.sort((a, b) => a.localeCompare(b)); // ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']




如何使用两个参数监视sort()。

2 个答案:

答案 0 :(得分:0)

这里有两个问题。第一个太广泛和模糊,所以我不会回答它。第二个是直截了当的。要监视数组sort方法,只需将其放在beforeEach块的规范中:

spyOn(Array.prototype, 'sort');

这里发生的事情是,数组上的sort方法实际上与Array的原型对象中定义的方法相同。

答案 1 :(得分:0)

尝试为sortlocaleCompare创建不同的间谍。

spyOn(Array.prototype,'sort').and.callThrough();
spyOn(String.prototype,'localeCompare'); // Add callThrough() if you want to verify the order

这样你就可以监视这两种方法。

现在,如果您想检查订单是否正确,请创建一个基本功能来检查订单。

检查升序的示例方法:(在Typescript中,但是你得到了逻辑)

public static isAscending(array: Array<string>): boolean { 
    let isAscending = false;
    let prev = array[0];
    for (let i = 0; i < array.length; i++) {
        if (i != array.length - 1) {
            if (prev < array[i + 1]) {
                isAscending = true;
            }
            else {
                return false;
            }
        }
    }
    if (isAscending) {
        return true;
    }
}