Тесты жасмина в карме: Неподготовлено ReferenceError: require не определен

Карма не может распознать инструкцию require в файле JSFileSpec.js. Запуск karma.conf.js:

(function() {
    describe("DummyEmitter creation", function(){
        return it("creation", function(){
            var DummyEmitter = require('Util.DummyEmitter');
            var dummy = new DummyEmitter('someName');
            return expect(dummy).toBeDefined();
        });
    });
})();

ReferenceError: require не определен

Ответ 1

Я столкнулся с такой же проблемой при попытке использовать require('module_name') (модули стиля CommonJS) внутри тестового примера и запускать его с помощью Karma.

Причина в том, что функция require недоступна браузеру (это undefined). Чтобы предоставить его браузеру, мы можем прокрутить файлы тестовых js до того, как Karma запускает тестовый пример в браузере, используя karma-browserify.

Установите карма-браузер с помощью npm install karma-browserify --save-dev

Обновить karma.conf.js

 frameworks: ['jasmine', 'browserify'],
 preprocessors: {
    'app/tests/*.js': [ 'browserify' ]
 },
 plugins: [..., 'karma-browserify'],

После этих изменений файл браузера запускается в браузере с помощью Karma, в котором определяется require и успешно выполняется тестовый пример

Ответ 2

Возможно, вы используете шаблон glob, который собирает материал в каталоге bin кармы. Попробуйте выполнить свои тесты, используя абсолютные пути, чтобы узнать, исправляет ли это.

Если это так, вы знаете, что ваш шаблон glob захватывает то, что вы не хотели.

Например, измените

{pattern: '**/**/*_test.js'},

к

{pattern: 'stuff/dashboard/home-page_test.js'},

проверьте, устраняет ли ваша проблема.

Ответ 3

Karma - тестовый бегун, который запускает ваши тесты в браузере. Независимо от того, какой браузер вы не знаете, какая функция требует.

Чтобы использовать жасмин с node, попробуйте jasmine- node. https://github.com/mhevery/jasmine-node

Чтобы запустить тест жаммины karma node, попробуйте (подождите его).... jasmine- node -karma. https://npmjs.org/package/jasmine-node-karma

Здесь страницы wiki jasmine, где я нашел приведенную выше информацию. https://github.com/pivotal/jasmine/wiki

Надеюсь, что это поможет.

Ответ 4

Сегодня я столкнулся с подобной проблемой. В моем случае решение было довольно простым. Я использую Babel через Webpack для обработки файлов .jsx. Файлы с расширением .jsx действительно успешно протестировали, а простые .js файлы сбросили опорную ошибку.

Если у кого-то есть аналогичная или эквивалентная настройка, они могут совместно использовать одно и то же решение.

В karma.config.js мне пришлось указать препроцессоры для файлов .js, как и для .jsx. Вот пример:

preprocessors: {
  "app/tests/**/*.test.jsx": ["webpack", "sourcemap"],
  "app/tests/**/*.test.js": ["webpack", "sourcemap"]
},

Я лучше добавлю, что в моем случае Webpack передает код Babel для компиляции, чтобы он мог запускаться в браузере. Я могу скопировать и вставить все webpack.config.js и karma.config.js, если кому-то это понадобится.

Ответ 5

Я использую webpack для этой цели. Я опубликовал свою конфигурацию на npm, чтобы сэкономить время для будущих проектов. Просто запустите npm install webpack-karma-jasmine и создайте файлы конфигурации для webpack и кармы, как описано в документах: https://www.npmjs.com/package/webpack-karma-jasmine

Ответ 6

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