【发布时间】:2012-09-30 19:59:03
【问题描述】:
我有一个项目,我最近刚刚介绍了 RequireJS。在 RequireJS 之前,我一直在用 Jasmine 测试我的项目。我现在正在尝试更新 Jasmine 的 SpecRunner 以便它可以处理 RequireJS。
我找到了this article on unit testing with RequireJS and Jasmine,我用它来帮助我入门。我遇到了如何加载模块的问题。每个模块都定义了它所依赖的其他模块,但每个模块的加载路径都是相对于 requireJS 的加载位置。
我在两个不同的位置加载 requireJS:background.html 和 SpecRunner.html。背景用于主应用程序,SpecRunner 用于测试。问题是我的模块在从 SpecRunner 调用时无法加载,因为它们的相对路径发生了变化。
例子:
- js/third_party/jquery-1.7.2.min.js
- js/background/player.js
- js/background/playlists.js
- tests/SpecRunner.html
- tests/spec/PlayerSpec.js
- background.html
有了这个文件夹层次结构和文件,我有两种情况。一种是代码运行正常,一种是有问题:
好的场景
- background.html 加载 require.js 并以 player.js 作为加载点执行。
- player.js 将 playlists.js 定义为依赖项。
- playlists.js 已加载。
- player.js 已加载。
糟糕的场景
- SpecRunner.html 加载 require.js 并以 player.js 作为加载点执行。
- player.js 将 playlists.js 定义为依赖项。
- playlists.js 无法加载。获取文件://tests/playlists.js
- 文件位置不正确。 playlists.js不在/tests下,是在js/background下!
我不确定我应该如何处理这个问题?似乎对路径名非常明确是我唯一的出路,但这与所有 requireJS 示例背道而驰。
【问题讨论】:
标签: javascript jquery requirejs jasmine