Неожиданная ошибка утверждения Mocha Chai

У меня есть утверждение mocha / chai, которое выдает ошибку, несмотря на то, что значения совпадают

введите здесь описание изображения

Код теста здесь:

describe("Util.SplitNumAndOper Tests", function(){
    it('should have "6+4+3" return [6,"+",4,"+",3]', function(){
        let a = util.splitNumAndOper("6+4+3");
        assert.equal(a,[6,'+',4,'+',3]);
    })
})

Что тут происходит?


person Vincent Tang    schedule 05.04.2018    source источник
comment
Я предполагаю, что это как-то связано со строгим равенством (одно и то же место в памяти) по сравнению с обычным равенством, но я не смог найти глубокое равенство в библиотеке утверждений chais.   -  person Vincent Tang    schedule 05.04.2018
comment
Вы должны использовать deepEqual   -  person Randy Casburn    schedule 05.04.2018
comment
хорошо, это сработало assert.deepEqual(a,[6,'+',4,'+',3]);   -  person Vincent Tang    schedule 05.04.2018
comment
С помощью chai вы можете использовать expect (array) .eql ([...]) для сравнения двух массивов по значениям.   -  person user2347763    schedule 05.04.2018


Ответы (1)


Метод .equal (фактический, ожидаемый, [сообщение]) утверждает нестрогое равенство (==) фактических и ожидаемых

.deepEqual (фактический, ожидаемый, [сообщение]) утверждает, что фактическое значение полностью равно к ожидаемому

В вашем случае значения actual и expected равны Array, они относятся к разным массивам. У них разные указатели в памяти. Так что .equal потерпит неудачу.

import { assert } from "chai";

describe("Util.SplitNumAndOper Tests", function(){
  it('should have "6+4+3" return [6,"+",4,"+",3]', function(){
    const  a = [6,'+',4,'+',3];
    assert.equal(a,[6,'+',4,'+',3]);
  })
})

результат модульного теста:

  Util.SplitNumAndOper Tests
    ✓ should have "6+4+3" return [6,"+",4,"+",3]


  1 passing (75ms)
person slideshowp2    schedule 09.10.2020