Как написать тест жасмина для ниже кода:
var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
items.sort((a, b) => a.localeCompare(b)); // ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']
Как я spy на sort() с двумя аргументами.
Попробуйте создать другой шпион как для sort
, а также localeCompare
.
spyOn(Array.prototype,'sort').and.callThrough();
spyOn(String.prototype,'localeCompare'); // Add callThrough() if you want to verify the order
Таким образом, вы можете следить за обоими методами.
Теперь, если вы хотите проверить правильность заказа, затем создайте базовую функцию для проверки порядка.
Пример метода проверки возрастания: (Его в машинописном тексте, но вы получаете логику)
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;
}
}
У вас здесь два вопроса. Первый слишком широк и неопределен, поэтому я не буду отвечать на него. Второй - простой. Чтобы шпионить за методом sort
массива, просто поставьте это в спецификации блока beforeEach
:
spyOn(Array.prototype, 'sort');
Что здесь происходит, так это то, что метод sort
в вашем массиве на самом деле тот же, что и в объекте прототипа Array.
spyOn(String.prototype, "localeCompare");