2017-01-18 7 views
0

Я использую Mocha для тестирования кода, экспортированного как модуль AMD. Выполнение теста мокко дает мне следующую ошибку.Импорт модуля AMD в тест Mocha

ReferenceError: define is not defined 
at Object.<anonymous> (/home/malintha/projects/...../xxx.js:1:63) 
at Module._compile (module.js:571:32) 
at Object.Module._extensions..js (module.js:580:10) 
at Module.load (module.js:488:32) 
at tryModuleLoad (module.js:447:12) 
at Function.Module._load (module.js:439:3) 
at Module.require (module.js:498:17) 
at require (internal/module.js:20:19) 

Источник, который испытан floows

define(['lodash', 'log', './yyy'], function(_, log, YYY) { 

var xxxy = function() { 

}; 

.............. 
}); 

И тест мокко

var expect = require("chai").expect; 
var sourceGenVisitor = require("../../xxx") 

describe("", function() { 
describe("", function() { 
    it("Checks generated source", function() { 
    ................... 
    }); 
    }); 
}); 

Как я могу решить эту проблему?

+0

В идеале, испытуемый модуль должен поддерживать как AMD и CommonJS , Таким образом, вам не нужно задаваться вопросом, как поддерживать AMD в узле. –

ответ

1

Вы можете использовать amd-loader. Я использовал его для лет в моем проекте, который был структурирован как коллекция модулей AMD. Установить с:

`npm install amd-loader` 

Затем он должен быть загружен перед любым модулем AMD. В общем:

require("amd-loader"); 

Для Мокко вы можете использовать аргумент --require amd-loader. Вы можете поместить его в свой файл test/mocha.opts, если вы не хотите, чтобы его запоминали, набирая его снова и снова.

+0

Теперь я получаю "module.js: 472 бросок ERR; ^ Ошибка: Не удается найти модуль" lodash". Я установил lodash и потребовал его в своем мокко-тесте, но все же дал мне ошибку. – Malintha

+0

Ваш вопрос здесь был помечен 'node.js', поэтому я дал вам ответ, который работает в узле. Я вижу, вы писали еще один вопрос, который использует браузер. Если вы находитесь в браузере, то самый простой способ - просто использовать RequireJS, как вы показываете, что делаете в этом вопросе. – Louis

0

Если вы используете тест мокко с машинописным текстом. Может быть, вы это делаете:

  1. Установите драм-погрузчик:

    npm install amd-loader --save 
    
  2. тест Run мокко:

    mocha src/**/*test.ts --require ts-node/register -r amd-loader