Как тестировать часть кода через Mocha.js?

311
26 августа 2017, 02:16

Вникаю в js и тестирование, возник вопрос. Есть скрипт с разными функциями - script.js; установлен nodejs с chai.js и mocha.js; написал пример теста, он спотыкается, говоря что "viewCookie is not defined"

    var assert = require('assert');
describe('Cookies', function() {
    describe('viewCookie()', function() {
        it('should return undefined', function() {
            assert.equal(undefined, viewCookie());
        });
    });
});

как правильно запустить тест только одной функции из script.js? и как правильно к нему обратиться из дирректории, где лежит тест? а также что делать если в функции запрашиваются параметры вроде document. итд, хотелось бы как то подставлять туда возможные значения.

Answer 1

Попробуйте подключить файл script.js как модуль. То есть через require('./script.js') (путь указан относительно файла с тестом). Но в этом случае вы должны в файле script.js добавить в конце конструкцию module.exports = *значение*. Вместо значения будет объект содержащий функции которые вы собираетесь протестировать, например, {viewCookie: viewCookie, anotherFunction: anotherFunction} Тогда в модуле теста подключив файл с функциями, вы можете вызывать их через переменную.

var script =  require('./script.js');
var assert = require('assert');
describe('Cookies', function() {
    describe('viewCookie()', function() {
        it('should return undefined', function() {
            assert.equal(undefined, script.viewCookie());
        });
    });
});

Если вы хотите этот файл с функциями использовать в браузере, то стоит сделать проверку на наличие module.exports, так как эта конструкция свойственна для Node.js Сделать это можно следующим образом:

if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
  module.exports = *значение*;
}
READ ALSO
Как передать все параметры родителю

Как передать все параметры родителю

Есть такая функция в родителе

203
Проблема с браузером firefox

Проблема с браузером firefox

сайт без адаптивности При уменьшении примера в браузере хром и во всех остальных кроме мозилысайт уменьшается под размеры окна

194
Yii2 проблема с пагинацией, GridView пагинация

Yii2 проблема с пагинацией, GridView пагинация

Добрый деньБез связки 2-х таблиц пагинация работает отлично, но с hasMany не работает

310