4

Благодарим вас за внимание всем, кто читает это. В этом вопросе довольно много.Почему эти повторные тесты Жасмина выполняются в браузере, но не в 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 использовать браузер, я получаю те же результаты (то есть только окно определено) и пустую страницу в браузере ...

ответ

5

Eureka ... проблема была в 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 # для общения со мной в Твиттере!