В настоящее время я разрабатываю проект, который хочу протестировать в разных средах, включая node.js и разные браузеры с karma / selenium, чтобы избежать проблем с совместимостью. (Я думаю, что буду использовать browserify в браузерах, но я еще не знаком с ним.)
У меня есть вложенный каталог тестирования, примерно так:
repo/
- project.js
- project.my.module.js
- spec/
-- helpers/
--- a.jasmine.helper.js
-- support/
--- jasmine.json
-- project.my.module/
--- ModuleClass.spec.js
-- project.MyClass.spec.js
-- project.OtherClass.spec.js
В настоящее время я тестировал проект только с jasmine-npm (это jasmine 2.2 для node.js). При тестировании рабочий каталог - это repo/
, где я запускаю node.exe
с jasmine.js
. jasmine.js
загружает jasmine.json
:
{
"spec_dir": "spec",
"spec_files": [
"**/*[sS]pec.js"
],
"helpers": [
"helpers/**/*.js"
]
}
Теперь у меня тут 2 проблемы.
- Как я могу избежать длинных относительных путей с помощью require, например
require("../../project.my.module.js")
вModuleClass.spec.js
файле? (Я бы предпочел использовать короткое постоянное имя, например, с помощью символической ссылки.) - Как сделать это таким образом, чтобы можно было запускать одни и те же тестовые файлы в разных браузерах? (Я хочу сохранить определения модуля commonjs по тестам.)
Я проверил несколько руководств по node.js, и, похоже, у меня есть два варианта. Я могу использовать package.json
(с некоторыми неизвестными мне волшебными параметрами конфигурации) или переместить файлы, которые хочу загрузить, в node_modules/
(что, я уверен, я не буду делать). Я открыт для предложений, потому что не вижу, как можно решить эту проблему ...
изменить:
Кажется, что karma-browserify решает проблему тестирования, возможно, мне нужно добавить жасмин для браузера, но это нормально. Мне не нужно менять определения модуля commonjs тестами. Таким образом, можно тестировать как в node.js, так и в браузере с длинными путями.
edit2:
В итоге я добавил родительский каталог моего репо в NODE_PATH. Таким образом, мне могут потребоваться все проекты, над которыми я сейчас работаю.
NODE_PATH
? Или положить все вnode_modules
? - person laggingreflex   schedule 11.02.2015NODE_PATH
: github.com/substack/node-browserify/issues/ 726. Я нашел другое возможное решение:npm link
Я тоже исследую это ... - person inf3rno   schedule 11.02.2015NODE_PATH
переменная среды связана с изменением пути, который использует узел, чтобы требовать сторонние модули. Мне нравится устанавливать модули с npm по всему миру, и мои проекты много лет хранятся в структуре каталогов:/projects/{project-name}/
, которую я тоже не хочу менять. Так что это недопустимо, или я что-то неправильно понял. - person inf3rno   schedule 11.02.2015require('any-module')
будет искатьany-module
в./node_modules
(как обычно) и в путях, указанных вNODE_PATH
. Если я понимаю ваше требование, вы хотите установить/projects/
вNODE_PATH
, чтобы можно былоrequire('project-name')
. На самом деле, печатая это, я думаю, что, возможно, неправильно вас понял. То, что вы хотите, вероятно,npm link
, да? - person laggingreflex   schedule 11.02.2015require('project-name')
в моих тестовых файлах, которые находятся в папке spec в репозитории проекта. Итак, вы говорите, что с NODE_PATH я смогу использовать как ~ inf3rno / node_modules /, так и проекты / в качестве источников модулей? Это было бы прекрасно! - person inf3rno   schedule 12.02.2015NODE_PATH
работает отлично. Я еще не пробовал использовать browserify, но afaik. browserify поддерживает это. Спасибо! Как давать баллы? : D - person inf3rno   schedule 13.02.2015