我有一个项目,我最近刚刚介绍了 RequireJS。在 RequireJS 之前,我一直在用 Jasmine 测试我的项目。我现在正在尝试更新 Jasmine 的 SpecRunner 以便它可以处理 RequireJS。
我发现这篇关于使用 RequireJS 和 Jasmine 进行单元测试的文章是我用来入门的。我遇到了如何加载模块的问题。每个模块都定义了它所依赖的其他模块,但每个模块的加载路径都与加载 requireJS 的位置相关。
我在两个不同的位置加载 requireJS:background.html 和 SpecRunner.html。背景用于主应用程序,SpecRunner 用于测试。问题是我的模块在从 SpecRunner 调用时无法加载,因为它们的相对路径发生了变化。
例子:
- js/third_party/jquery-1.7.2.min.js
- js/背景/player.js
- js/背景/播放列表.js
- 测试/SpecRunner.html
- 测试/规范/PlayerSpec.js
- 背景.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 示例背道而驰。