Модульные тесты AVA не пройдены, пройдены спецификации тестирования Javascript - PullRequest
0 голосов
/ 15 июня 2019

В настоящее время я работаю с модулями ES6 с расширениями .mjs и создаю тестовые случаи для некоторых функций.

Я выбрал AVA из-за его поддержки этого типа расширения, но выполнение теста не выполняетсякак и ожидалось.

Я предполагаю, что сценарий не преобразуется должным образом, или в моем package.json

отсутствует какая-либо помощь.опыт использования AVA с --experimental-modules

package.json

{
    "scripts": {
        "test": "ava --init"
    },
    "ava": {
        "require": [
      "esm"
    ],
        "babel": false,
        "extensions": [
      "mjs"
    ]
    }
}

test.spec.mjs

import rotate from './index.mjs'
import test from 'ava';

test('rotate img', t => {
    var m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
    rotate(m);

    t.is(m, [[7, 4, 1], [8, 5, 2], [9, 6, 3]]);
});

index.js

 var rotate =function(matrix) {
    let cols = 0,
     original = JSON.parse(JSON.stringify(matrix));

    for (let i=0; i < matrix.length; i++){
        for (let j = matrix.length; j > 0; j--){
            matrix[i][cols]=original[j-1][i]; 

            cols+=1;
            if(cols == matrix.length){
                cols= 0;
            }
        }
    }
}
export default rotate;

При запуске npm test, как определено в скрипте пакета

ОШИБКА:

 1 test failed

  rotate

   12: rotate(m);
   13:     t.is(m, [[7,4,1],[8,5,2],[9,6,3]
   14: ]);

  Values are deeply equal to each other, but they are not the same:

  [[7,4,1,],[8,5,2,],[9,6,3,],] <<fails

npm ERR! Test failed.  See above for more details.

1 Ответ

1 голос
/ 16 июня 2019

AVA не поддерживает .mjs из коробки, но похоже, что вы выяснили конфигурацию.

Для сценария test просто используйте ava, без --init.

Все это говорит о том, что тест не пройден, потому что вы используете неправильное утверждение.t.is(actual, expected) использует Object.is(actual, expected) (что в значительной степени actual === expected).И вы не можете сравнивать подобные массивы.

Используйте взамен t.deepEqual().

...