Arhn - архитектура программирования

JS Mocha тест ES6 Babel

Я новичок в мире JavaScript, и моя первая задача — покрыть существующий проект тестами. Мы используем ES6/babel/webpack2, и было решено выбрать Mocha/Chai в качестве тестовых фреймворков.

Первым делом я создал файл .babelrc в корне проекта:

{
  "presets": ["es2015", "react", "stage-0"]
}

После этого я добавил следующий скрипт в package.json:

"test": "mocha --compilers js:babel-core/register ./src/test/*.js"

Мой простой тестовый файл выглядит так:

import {arraysAreEquals} from 'dashboard-app/utils/common-utils'
import {assert} from 'chai'

describe("common-utils", function () {

    it ("arraysAreEquals", function () {
       var array1 = [1, 2, 3];
       var array2 = [1, 2, 3];
       assert.equal(arraysAreEquals(array1, array2), true);
    });
});

Запустив мой тест (тест запуска npm), я получил следующую ошибку:

Error: Cannot find module 'dashboard-app/utils/common-utils'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)

Это вполне ожидаемо, так как dashboard-app — это просто псевдоним, который устанавливается как в webpack.config.dev.js, так и в webpack.config.prod.js. :

 resolve: {
        modules: [
            path.resolve(__dirname),
            "node_modules"
        ],
        alias: {
            'dashboard-app/config': 'src/config',
            'dashboard-app/utils': 'src/utils',
            .......

Итак, в основном мой вопрос заключается в том, как мне изменить тестовый скрипт в package.json, чтобы связать мой webpack.config.dev.js (я считаю, что он подходит для тестовой среды)? У меня не сработало следующее (ни один из двух вариантов):

"test": "NODE_ENV=dev mocha --compilers js:babel-core/register ./src/test/*.js"

"test": "NODE_ENV=dev --env=dev mocha --compilers js:babel-core/register ./src/test/*.js"

Ответы:


1

Когда вы запускаете тесты из вашего package.json, вы не используете webpack для связывания вашего javascript, поэтому вы должны указать своим тестам, как понимать этот импорт. Вы можете использовать библиотеку mock-require для макета импорта вашего псевдонима. Вы напишете файл test_helper.js, в котором будет что-то вроде

mock('dashboard-app/utils/common-utils', 'src/utils/common-utils');

Тогда скрипт npm будет таким:

"test": "mocha --compilers js:babel-core/register test_helper.js ./src/test/*.js"
03.07.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..