如何避免在不同环境中使用茉莉花的长相对路径(../../../)?

时间:2015-02-11 03:47:05

标签: node.js testing jasmine karma-runner browserify

我目前正在开发一个项目,我想在不同的环境中测试 - 包括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(对于node.js来说是jasmine 2.2)来测试项目。通过测试工作目录是repo/,我使用node.exe运行jasmine.jsjasmine.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。这样我就可以要求我正在开发的每个项目。

1 个答案:

答案 0 :(得分:2)

如何在node_modules下对项目目录进行符号链接(例如node_modules/project)并要求require("project/project.my.module.js")