gpt4 book ai didi

jasmine-jquery loadFixtures 与 Jasmine 2.0 不起作用

转载 作者:行者123 更新时间:2023-12-02 10:07:58 24 4
gpt4 key购买 nike

我花了大约一天的时间调试这个,但我不知所措。看起来 jasmine-jquery 2.0.2 中有些东西不起作用。

我正在从 Jasmine 1.3.1 和 jasmine-jquery 1.5 更新到最新版本。根据我尝试加载装置的方式,我遇到了各种失败。在我调整 jasmine-jquery 以向 ajax.fail() 方法提供参数后,我得到“Fixture无法加载:./ExposureWorksheetFixture.html(状态:解析器错误,消息:无效的XML”)。

当我调整示例 jasmine runner 并测试时,我得到的另一个效果是它说“零固定装置,零故障”。当我引用 jasmine-jquery、jquery 1.10.2 并尝试设置固定装置时,会发生这种情况。如果我删除该操作(但保留引用),则示例将起作用。

当我尝试加载固定装置时遇到的另一个错误是“(状态:错误,消息:访问受限 URI 被拒绝)”。当它实际尝试加载位于指定位置的文件时,似乎会发生这种情况。我看到另一个问题指出 jquery 需要真正的 Web 服务器来加载文件,并且它不喜欢本地文件路径,但我对这些库的旧版本没有这个问题。这种情况发生在 Firefox 中。我在 IE 8 中收到 TypeError: Object does not support this property or method。在 Firefox 中,我收到 Error: Fixture Could not be returned:spec/javascripts/fixtures/fixture.html (状态:错误,消息:发生网络错误。)

这是一些示例代码...

在 PlayerSpec.js 中:

jasmine.getFixtures().fixturesPath = "./";
...
beforeEach(function() {
player = new Player();
song = new Song
loadFixtures("fixture.html");
});

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

<!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>

运行器上的输出(第一次测试 - 所有测试都失败)

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:32pm est:我只是尝试仅更新 jasmine-jquery,当我这样做时,一切都失败了(Jasmine 1.31)。我想这个库一定出了什么问题:(

最佳答案

我要感谢 travisjeffery 的回答。虽然这并不能解决我的问题,但它让我重新尝试不同的事情。我发布的具体示例的答案是,我将夹具放在带有规范的文件夹中,该文件夹不是带有运行者的文件夹,并且路径是相对于运行者定义的。然而,我的实际设置问题仍然存在。自从我终于得到了一个工作样本后,我开始努力找出我做错了什么。

主要问题是我的 HTML Fixture 虽然在 jasmine-jquery 1.5 中有效,但在 2.0.2 版本中不再有效。我以为我之前通过一次删除一个片段就涵盖了所有语法可能性,但是当我再次这样做时,我发现删除脚本部分会加载夹具。我把它放回去,但是在 html 元素内,而不是在它之后。我认为这相当于 XML 文档中的两个根元素,因此 BAM! 解析错误。

另一个问题是我必须在加载 boot.js 文件之后将 jasmine-jquery 脚本放入运行器中,否则我会得到“0个固定装置0个失败”。之后,我必须更新 Jasmine 语法,现在我又拥有了一组工作测试。我希望这对其他人有帮助。

关于jasmine-jquery loadFixtures 与 Jasmine 2.0 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21763470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com