gpt4 book ai didi

javascript - 为什么这些 resharper Jasmine 测试在浏览器中运行而不是在 phantomjs 中运行

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:35:39 25 4
gpt4 key购买 nike

预先感谢所有阅读本文的人 - 这个问题有很多细节。

我正在尝试使用 Jasmine 将 javascript 测试引入到我们的项目中。我编写的测试在浏览器中工作,但不是通过 Resharper 使用 PhantomJS。

我猜我遗漏了一些关于解析我们的 JS 文件所需的管道的东西(也许我发现了我们的 JS 设置的问题)。非常感谢任何帮助...

我已经使用 jasmine 在 Visual Studio 中设置了 Jasmine 测试...

// The Jasmine Test Framework
/// <reference path="../jquery-1.10.1.js"/>
/// <reference path="lib/jasmine-1.3.1/jasmine.css"/>
/// <reference path="lib/jasmine-1.3.1/jasmine.js"/>
/// <reference path="lib/jasmine-1.3.1/jasmine-html.js"/>
/// <reference path="lib/jasmine-jquery.js"/>
/// <reference path="lib/mock-ajax.js"/>
// Classes to test
/// <reference path="../MyNamespace.Navigation.js"/>

describe("Breadcrumbs", function () {
it("should have a window object", function() {
//this test passes in PhantomJS and the browser
expect(window).toBeDefined();
});

it("should have the base object available", function() {
//this test only passes in the browser
expect(window.MyNamespace).toBeDefined();
});
});

这引用了一个包含...的 JS 文件

(function (app, $, undefined) {
//do things here
}(window.MyNameSpace = window.MyNamespace || {}, jQuery));

我有一个 SpecRunner.html 可以成功运行我的测试...它是 Jasmine 1.3.1 独立版附带的 specrunner html,头部编辑如下...

 <link rel="stylesheet" type="text/css" href="lib/jasmine-1.3.1/jasmine.css">
<script type="text/javascript" src="../jquery-1.10.1.js"></script>
<script type="text/javascript" src="lib/jasmine-1.3.1/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-1.3.1/jasmine-html.js"></script>

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

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

这些测试要么由我的 SpecRunner.html(工作正常)运行,要么通过使用 PhantomJS 的 Resharper 7s testrunner 运行,我猜这不会评估我的 JS 代码文件中的代码..?


更新:一些额外的细节......

Resharper 版本是:

JetBrains ReSharper 7.1.3 Full Edition Build 7.1.3000.2254 on 2013-04-10T16:48:18

Phantom JS 版本为 1.9.1.0

我刚刚意识到我的问题中没有真正的错误 - 哦!

TypeError: 'undefined' is not an object (evaluating 'window.MyNamespace.Whatever') in http://localhost:47815/Tests.js (line 26)
TypeError: 'undefined' is not an object (evaluating 'window.MyNamespace.Whatever')
at BreadcrumbsSpec.js: line 26
at jasmine.js: line 1035
at jasmine.js: line 2053
at jasmine.js: line 2006
at jasmine.js: line 2335
at jasmine.js: line 2053
at jasmine.js:2043

有趣的是,Tests.js 不是我的文件 - 我想那是 R# 的东西。

啊 - Tests.js 是我的规范文件(即本例中的 BreadcrumbsSpec.js)。如果我启动开关选项来告诉 Resharper TestRunner 使用浏览器,我会得到相同的结果(即只定义了窗口)和浏览器中的空白页面...

最佳答案

Eureka ...问题是 ID-10-T,也称为 PEBCAK

我没有考虑或调查 R# 实际将如何运行测试。因此在 Spec.js 中设置了相对于 my specrunner.html

的引用路径

R# 实际上将 Spec 文件作为内联脚本注入(inject)到 html 页面中,所以我的相对路径都是错误的。

我只是将引用路径设置为从项目根目录开始的绝对路径,一切都很好。

// The Jasmine Test Framework
/// <reference path="/Scripts/jquery-1.10.1.js"/>
/// <reference path="/Scripts/tests/lib/jasmine-1.3.1/jasmine.js"/>
/// <reference path="/Scripts/tests/lib/jasmine-1.3.1/jasmine-html.js"/>
/// <reference path="/Scripts/tests/lib/jasmine-jquery.js"/>
/// <reference path="/Scripts/tests/lib/mock-ajax.js"/>
// Classes to test
/// <reference path="/Scripts/MyNamespace.Navigation.js"/>

感谢 R# 用户在 Twitter 上与我互动!

关于javascript - 为什么这些 resharper Jasmine 测试在浏览器中运行而不是在 phantomjs 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593874/

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