首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jasmine-jquery loadFixtures与Jasmine 2.0不兼容

jasmine-jquery loadFixtures与Jasmine 2.0不兼容
EN

Stack Overflow用户
提问于 2014-02-14 03:15:08
回答 3查看 10.6K关注 0票数 4

我花了大约一天的时间来调试它,我感到很困惑。看起来在jasmine-jquery 2.0.2中有些东西不起作用。

我正在从Jasmine 1.3.1和jasmine-jquery 1.5更新到最新版本。根据我试图加载fixture的方式,我得到了各种各样的失败。在我调整了jasmine-jquery以向ajax.fail()方法提供参数之后,我得到了“Fixture not be loaded:./ExposureWorksheetFixture.html (status: parsererror,message: Invalid XML”)。

当我调整样例jasmine runner并进行测试时,我得到的另一个效果是它显示“零固定,零故障”。当我引用jasmine- jquery,jquery 1.10.2并尝试设置fixture时,就会发生这种情况。如果我删除该操作(但保留引用),则示例可以正常工作。

当我尝试加载fixture时,我得到的另一个错误是"(status: error,message: Access to restricted URI denied)“。这似乎发生在它实际尝试加载文件时,该文件位于指定的位置。我看到了另一个问题,它指向jquery需要一个真正的web服务器来加载文件,它不喜欢本地文件路径,但我在这些库的旧版本上没有这个问题。这发生在Firefox中。在IE 8中我得到了一个TypeError: Object doesn't support this property or method,在火狐中我得到了Error: Fixture could not be loaded: spec/javascripts/fixtures/fixture.html (status: error, message: A network error occurred.)

下面是一些示例代码。

在PlayerSpec.js中:

代码语言:javascript
复制
jasmine.getFixtures().fixturesPath = "./";
...
beforeEach(function() {
  player = new Player();
  song = new Song
loadFixtures("fixture.html");
});

在SpecRunner.html中,注意对jquery和jasmine-jquery的额外引用:

代码语言:javascript
复制
<!DOCTYPE HTML>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Jasmine Spec Runner v2.0.0</title>

  <link rel="shortcut icon" type="image/png" href="lib/jasmine-2.0.0/jasmine_favicon.png">
  <link rel="stylesheet" type="text/css" href="lib/jasmine-2.0.0/jasmine.css">

  <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script>
  <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine-html.js"></script>
  <script type="text/javascript" src="lib/jasmine-2.0.0/boot.js"></script>
  <script type="text/javascript" src="lib/jquery-1.10.2.js"></script>
  <script type="text/javascript" src="lib/jasmine-jquery.js"></script>

  <!-- include source files here... -->
  <script type="text/javascript" src="src/Player.js"></script>
  <script type="text/javascript" src="src/Song.js"></script>

  <!-- include spec files here... -->
  <script type="text/javascript" src="spec/SpecHelper.js"></script>
  <script type="text/javascript" src="spec/PlayerSpec.js"></script>

</head>

<body>
</body>
</html>

runner上的输出(第一个测试-所有测试都失败)

代码语言:javascript
复制
Jasmine2.0.0finished in 0.019s

raise exceptions5 specs, 5 failuresSpec List | Failures
Player should be able to play a Song
Error: Fixture could not be loaded: spec/javascripts/fixtures/fixture.html (status: error, message: Access to restricted URI denied) in file:///D:/Temp/jas/lib/jasmine-jquery.js (line 132)
jasmine.Fixtures.prototype.loadFixtureIntoCache_/request<@file:///D:/Temp/jas/lib/jasmine-jquery.js:132 jQuery.Callbacks/fire@file:///D:/Temp/jas/lib/jquery-1.10.2.js:3048 jQuery.Callbacks/self.add@file:///D:/Temp/jas/lib/jquery-1.10.2.js:3094 jasmine.Fixtures.prototype.loadFixtureIntoCache_@file:///D:/Temp/jas/lib/jasmine-jquery.js:131 jasmine.Fixtures.prototype.getFixtureHtml_@file:///D:/Temp/jas/lib/jasmine-jquery.js:115 jasmine.Fixtures.prototype.read@file:///D:/Temp/jas/lib/jasmine-jquery.js:77 jasmine.Fixtures.prototype.load@file:///D:/Temp/jas/lib/jasmine-jquery.js:65 jasmine.Fixtures.prototype.proxyCallTo_@file:///D:/Temp/jas/lib/jasmine-jquery.js:161 window.loadFixtures@file:///D:/Temp/jas/lib/jasmine-jquery.js:763 @file:///D:/Temp/jas/spec/PlayerSpec.js:9 attemptSync@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1510 QueueRunner.prototype.run@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1498 QueueRunner.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1485 Env/queueRunnerFactory@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:518 Spec.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:309 Suite.prototype.execute/wrapChildAsAsync/<@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1708 attemptAsync@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1520 QueueRunner.prototype.run@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1496 QueueRunner.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1485 Env/queueRunnerFactory@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:518 Suite.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1696 Suite.prototype.execute/wrapChildAsAsync/<@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1708 attemptAsync@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1520 QueueRunner.prototype.run@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1496 QueueRunner.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1485 Env/queueRunnerFactory@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:518 Suite.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1696 @file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:541 attemptAsync@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1520 QueueRunner.prototype.run@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1496 QueueRunner.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1485 Env/queueRunnerFactory@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:518 @file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:548 window.onload@file:///D:/Temp/jas/lib/jasmine-2.0.0/boot.js:170 

编辑2/13/14 @8:32 do :我刚刚尝试只更新jasmine-jquery,当我这样做时,所有的东西都失败了(Jasmine 1.31)。我在想,这个库肯定有什么问题:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-20 01:33:46

我想感谢travisjeffery的回答。虽然这不是我问题的解决方案,但它让我重新尝试了不同的东西。对我发布的特定示例的答案是,我将夹具放在包含规范的文件夹中,而不是包含流道的文件夹中,并且路径是相对于流道定义的。然而,我的真实设置的问题仍然存在。自从我最终得到了一个工作样本,我就开始工作,找出我做错了什么。

主要问题是我的HTML Fixture,虽然在jasmine-jQuery1.5中有效,但在2.0.2版中不再有效。我认为我已经通过一次删除一个片段的方式涵盖了前面的所有语法可能性,但是当我再次这样做时,我发现删除我的脚本部分会加载fixture。我把它放回原处,但是放在html元素内,而不是放在它后面。我认为这等同于文档中的两个根元素,因此XML!解析错误。

另一个问题是,在加载boot.js文件后,我必须将jasmine-jquery脚本放在运行器中,否则我会得到“0fixtures 0 failures”。在那之后,我必须更新Jasmine语法,现在我又有了一组可用的测试。我希望这对其他人有帮助。

票数 4
EN

Stack Overflow用户

发布于 2014-02-19 06:58:02

我维护jasmine-jquery。

jasmine和jasmine-jquery在这里很好,问题是加载fixture的ajax请求不符合浏览器的安全策略。在jasmine-jquery的自述文件中有一个关于这个的部分:https://github.com/velesin/jasmine-jquery/#cross-domain-policy-problems-under-chrome

票数 3
EN

Stack Overflow用户

发布于 2014-07-11 01:57:23

谢谢。我在spec_helper.js.coffee中添加了以下内容:

代码语言:javascript
复制
# rake spec:javascript loads specs relative to the tmp/jasmine/runner.html, need to override:
jasmine.getFixtures().fixturesPath="../../spec/javascripts/fixtures"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21763470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档