如何为以下代码编写茉莉花测试:
var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
items.sort((a, b) => a.localeCompare(b)); // ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']

如何使用两个参数监视sort()。
答案 0 :(得分:0)
这里有两个问题。第一个太广泛和模糊,所以我不会回答它。第二个是直截了当的。要监视数组sort
方法,只需将其放在beforeEach
块的规范中:
spyOn(Array.prototype, 'sort');
这里发生的事情是,数组上的sort
方法实际上与Array的原型对象中定义的方法相同。
答案 1 :(得分:0)
尝试为sort
和localeCompare
创建不同的间谍。
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;
}
}