Простите, если я излагаю все, что вы уже знаете, но проблема, по-видимому, заключается в сравнении базовых объектов, выполняемых jest.
Массивы в javascript - это просто объекты с пронумерованными свойствами, т.е.
{
0: "value at first index",
1: "value at second index"
}
Таким образом, сравнение выполняется для этого базового объекта. В соответствии с этой проблемой, поднятой кем-то на странице jest
github, возможно, что функция, которую вы используете для создания отсортированного массива, возвращает не стандартный массив, поэтому сравнение не удается выполнить для базового объекта.
Аналогичная проблема: https://github.com/facebook/jest/issues/5998
Решение, предложенное одним комментатором, состоит в том, чтобы Json.Stringify()
каждый массив в тесте и сравнение с ним, поскольку при этом будут сравниваться значения сами по себе.
Это, однако, как указано "Обход, а не исправление".
Редактировать Опция stringify работает не во всех случаях и ее следует избегать.
Полное решение для проверки, если два массива равны, находится в первом ответе на этот вопрос: Как проверить, равны ли два массива JavaScript?
Отказ от ответственности : Не мой код!
function arraysEqual(a, b) {
if (a === b) return true;
if (a == null || b == null) return false;
if (a.length != b.length) return false;
// If you don't care about the order of the elements inside
// the array (i.e. [1, 2, 3] == [3, 2, 1]), you should sort both arrays here.
// Please note that calling sort on an array will modify that array.
// you might want to clone your array first.
for (var i = 0; i < a.length; ++i) {
if (a[i] !== b[i]) return false;
}
return true;
}