Почему эти жармин-тесты работают в браузере, а не в фантомах?
Заранее спасибо всем, кто прочитает это - в этом вопросе достаточно много деталей.
Я пытаюсь внедрить тестирование javascript в наш проект, используя Jasmine. Тесты, которые я написал, работают в браузере, но не используют PhantomJS через Resharper.
Я предполагаю, что мне чего-то не хватает в сантехнике, необходимой для анализа наших файлов JS (возможно, я обнаружил проблему с нашей настройкой JS). Любая помощь очень ценится...
Я установил тесты Жасмин внутри Visual Studio, используя жасмин...
// 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, который может успешно запускать мои тесты... это html specrunner, который поставляется с Jasmine 1.3.1 автономно, с головой, отредактированной так...
<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 (который работает нормально), либо с помощью тестового прогона Resharper 7s с использованием PhantomJS, который, как я предполагаю, не оценивает код в моем файле кода JS..?
Обновление: некоторые дополнительные детали...
Решарпер версия:
JetBrains ReSharper 7.1.3 Полная версия, сборка 7.1.3000.2254, 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 об использовании браузера, я получаю те же результаты (т. Е. Определяется только окно) и пустую страницу в браузере...
1 ответ
Эврика... проблема была в ID-ten-T, иначе известном как PEBCAK
Я не думал и не исследовал, как R# будет на самом деле запускать тесты. И поэтому установил ссылочные пути в Spec.js относительно моего specrunner.html
R# фактически внедряет файл Spec в 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# людям за участие в Твиттере!