测试以检查阵列是否已反转到位

时间:2018-04-24 22:10:16

标签: javascript arrays unit-testing mocha chai

我有一个方法,我已经放在数组原型上来反转数组(这只是为了学习目的)。此方法应该反转数组。

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总是等于reverseArr,所以它并没有真正检查任何东西。

我如何编写一个可以检查数组是否已反转的测试?

1 个答案:

答案 0 :(得分:0)

&#13;
&#13;
const assert = require('assert');


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('yarra1', () => {
    it('should reverse an array in place and return it', () => {
      let arr = [1,2,3];
      let rev = [3,2,1];
      let reversedArr = arr.yarra();
      for(let i =0;i<arr.length;i++){
        assert(reversedArr[i]===rev[i])
      }
    });
  });

  describe('yarra2', () => {
    it('should reverse an array in place and return it', () => {
      let arr = [1,2,3];
      let rev = [3,2,1];
      let reversedArr = arr.yarra();
      assert(reversedArr.toString() === rev.toString())
    });
  });
&#13;
&#13;
&#13;