使用Jasmine配置Karma:未定义getJasmineRequireObj

时间:2014-06-24 07:34:05

标签: configuration karma-runner karma-jasmine

它给了我这个错误:

Chrome 37.0.2019 (Mac OS X 10.9.3) ERROR
  Uncaught ReferenceError: getJasmineRequireObj is not defined at /Users/Lucia/Desktop/test-yo-karma/dev/vendors/jasmine/src/core/Spec.js:1 

但我确保文件确实存在。并且无法在任何地方找到错误?

4 个答案:

答案 0 :(得分:8)

我发现我有

frameworks: ['jasmine', 'jasmine-ajax'],

而不是

frameworks: ['jasmine-ajax', 'jasmine'],

在我的karma.conf中

答案 1 :(得分:1)

花了4个小时处理同样的问题。这里有几个问题出错(因此所有不同的,可能同样准确的答案),它的核心是:版本冲突需要特定的依赖关系'jasmine','jasmine-ajax'和'karma-jasmine-ajax ”。

我使用的是Jasmine 1.3,当前版本的karma-jasmine-ajax取决于{Jasis 1.3.x 不兼容的jasmine-ajax 版本。

这在jasmine-ajax文档中有说明,但不在karma-jasmine-ajax文档中注明:“此分支现在是2.0版,如果你需要Jasmine 1.3.x的jasmine-ajax,请抓住该标签的最后一个版本。“

为了解决此特定冲突,我在package.json中指定了 "karma-jasmine-ajax": "0.1.3", ,其中包含 jasmine-ajax版本2.0.0 。此版本的jasmine-ajax不使用getJasmineRequireObj

如果您直接在jasmine-ajax加载,则可以使用此版本:https://raw.github.com/pivotal/jasmine-ajax/v1.3.1/lib/mock-ajax.js

请记住(还有另一个问题)不同版本的茉莉花在request.responserequest.RespondWith的使用方面有所不同 - 这会在旧版本和新版本之间来回切换。

希望这有帮助。

答案 2 :(得分:0)

最初我在karma.conf.js

中有这个
files: [
  {pattern: 'dev/vendors/**/*.js', included: false},
  {pattern: 'dev/scripts/**/*.js', included: false},
  {pattern: 'test/**/*Spec.js', included: false},
  'test/test-main.js'
]
事实证明,

  1. 文件的顺序包括事项
  2. 您不应该包含不相关的文件(例如整个/vendors
  3. 所以我应该按照依赖顺序包含单独的文件。

    [The unhelpful documentation]

答案 3 :(得分:0)

我也看到了这个错误,当我查看它时,结果发现karma.conf.js中的var TEST_REGEXP定义过于广泛,实际上正在抓取并执行:my_client / app / bower_components / jasmine / src /芯/ Spec.js:1

一旦我更改了我的TEST_REGEXP以仅包含我的规格(您也可以通过专门排除供应商目录的所有规范文件来执行此操作),错误消失了。