Мы только начинаем с того, что в нашем проекте, основанном на додзё, проводятся некоторые модульные тесты, запущенные в Intern.Не удается выполнить модульные тесты на модулях с зависимостями от dojo 1.x с использованием Intern
Что происходит, что когда стажер пытается загрузить модуль под зависимостями Test в мы получаем следующее сообщение об ошибке:
/<path/to/dev/folder>/app/node_modules/intern/node_modules/dojo/dojo.js:406
match = mid.match(/^(.+?)\!(.*)$/);
^
TypeError: Cannot read property 'match' of null at getModule (/<path/to/dev/folder>/app/node_modules/intern/node_modules/dojo/dojo.js:406:15) at mix.amd.vendor (/<path/to/dev/folder>/app/node_modules/intern/node_modules/dojo/dojo.js:832:17) at /<path/to/dev/folder>/app/src/simplebuilding/model/ModelError.js:10:1
at exports.runInThisContext (vm.js:74:17)
at Object.vm.runInThisContext (/<path/to/dev/folder>/app/node_modules/intern/node_modules/istanbul/lib/hook.js:163:16)
at /<path/to/dev/folder>/app/node_modules/intern/node_modules/dojo/dojo.js:762:8
at fs.js:334:14
at FSReqWrap.oncomplete (fs.js:95:15)
Вот мой конфигурационный файл - Я начал копировать пример одного и добавления карты раздел к загрузчику.
define({
proxyPort: 9000,
proxyUrl: 'http://localhost:9000/',
capabilities: {
'selenium-version': '2.41.0'
},
{ browserName: 'chrome', version: '40', platform: [ 'OS X' ] }
],
maxConcurrency: 3,
tunnel: 'NullTunnel',
loader: {
// Packages that should be registered with the loader in each testing environment
packages: [
{ name: 'dojo', location: 'src/dojo' },
{ name: 'dojox', location: 'src/dojox' },
{ name: 'dijit', location: 'src/dijit' },
{ name: 'app', location: 'src/app' },
{ name: 'tests', location: 'tests' }
],
map: {
'*': {
'dojo' : 'dojo'
},
app : {
'dojo' : 'dojo'
},
intern : {
'dojo' : 'node_modules/intern/node_modules/dojo'
},
'tests' : {
'dojo' : 'dojo'
}
}
},
suites: [ 'tests/model/modelerror' ],
functionalSuites: [ /* 'myPackage/tests/functional' */ ],
excludeInstrumentation: /^(?:tests|test\-explore|node_modules)\//
});
Файл испытуемый имеет зависимость от додзё/_Образы базовой/Провозглашение додзё/_Образы базовой/Ланг, и додзё/Stateful, и это о нем.
Я создал фиктивный класс, чтобы проверить, где не было зависимостей dojo, и он работает нормально.
Я попытался переключить загрузчик на локальную версию dojo 1.10.3, которую мы имеем в нашем проекте, и это порождает совершенно разные ошибки, связанные с невозможностью найти стажера (даже если я дам ему определение пакета в config). Эти ошибки выглядят следующим образом:
{ [Error: ENOENT, no such file or directory '/<path/to/dev/folder>/app/node_modules/.bin/main.js']
errno: -2,
code: 'ENOENT',
path: '/<path/to/dev/folder>/app/node_modules/.bin/main.js',
syscall: 'open' }
Наша структура проекта довольно прямолинейно:
root
|--src
|--dojo (dijit/dojox/dgrid/etc)
|--app
|--tests
|--intern.js (config file)
Я пробовал несколько вариантов, кроме изменения загрузчика, как пытаются убедиться, что базовый путь верный. Я попытался запустить его в узле 0.10.36 и 0.12.2. Но каждый раз, когда я отлаживаю это с помощью узла-инспектора, когда он загружает модуль для моего тестируемого файла, а середина имеет значение NULL и прыгает обратно в стеке, он выглядит нормально, но что-то теряется в vm.runInThisContext() вызов, а середина исчезает к моменту вызова метода getModule().
Любая помощь приветствуется - спасибо!