javascript - 测试检查数组是否原地反转

标签 javascript arrays unit-testing mocha.js chai

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

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,所以它不会真正检查任何内容。

我该如何编写一个测试来检查数组是否原地反转?

最佳答案

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())
    });
  });

关于javascript - 测试检查数组是否原地反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50011384/

相关文章:

javascript - 注销后处理浏览器的后退和下一步按钮 Python

javascript - 查找特定类别的最后一个 div 的子级数

Java:获取 ENUM 元素的数组

Java - 如何将 ArrayList 对象写入 txt 文件?

javascript - angularjs 单元测试 Controller orderBy

ruby-on-rails - 如何通过 rspec stub 静态类方法

javascript - 查找数组中最后一个带有键的字典

javascript - 如何在控制台中需要 React 组件

javascript - 如何按对象的值对对象数组进行排序

ruby-on-rails - Rails 测试和 Mocha : How to stub specific model - conditional any_instance?