У меня есть метод, который я поместил в прототип массива, который инвертирует массив (это сделано только для целей обучения).Этот метод должен обратить массив на место.
Array.prototype.yarra = function () {
for (let left=0, right=this.length-1; left<right; left++, right--) {
[this[left], this[right]] = [this[right], this[left]]
}
return this
};
Я написал несколько тестов, чтобы проверить, работает ли метод должным образом.
describe('yarra', function () {
it('should reverse an array in place and return it', function () {
var arr = [1,2,3];
var reversedArr = arr.yarra();
reversedArr.should.eql([3,2,1]);
arr.should.equal.reversedArr;
[4,5,6].yarra().should.eql([6,5,4]);
});
});
Я понимаю, что тесты не работают должным образом, так как я перевернул массив и вернул новый массив, и он все еще прошел.Кроме того, поскольку var reversedArr = arr.yarra()
означает, что arr всегда будет равняться reversedArr, поэтому он ничего не проверяет.
Как написать тест, который может проверить, не перевернут ли массив на месте?