Благодарим вас за внимание всем, кто читает это. В этом вопросе довольно много.Почему эти повторные тесты Жасмина выполняются в браузере, но не в phantomjs.
Я пытаюсь внедрить Javascript-тестирование в наш проект с использованием Jasmine. Те тесты, которые я написал, работают в браузере, но не используют PhantomJS через Resharper.
Я предполагаю, что я пропустил что-то о сантехнике, необходимой для разбора наших JS-файлов (возможно, я идентифицирую проблему с нашей установкой JS). Любая помощь очень ценится ...
У меня есть настройки тестов Jasmine внутри 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, который может успешно запускать мои тесты ... это specrunner html, который поставляется с 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 ..?
Обновление: некоторые дополнительные детали ...
Resharper версия:
JetBrains ReSharper 7.1.3 Full Edition Сборка 7.1.3000.2254 на 2013-04-10T16: 48: 18
и Phantom JS версия 1.9.1.0
И я только что понял, что у меня нет реальной ошибки в моем вопросе - Doh!
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 #.
Ah - Tests.js - это мой файл спецификации (т. Е. BreadcrumbsSpec.js в этом случае). Если я запустил параметры переключателя, чтобы сообщить Resharper TestRunner использовать браузер, я получаю те же результаты (то есть только окно определено) и пустую страницу в браузере ...