2015-12-03 3 views
3

Я пытаюсь использовать объект window в тесте Жасмин.Как использовать объект окна в жасмине?

В тестовом файле loader_spec.s у меня есть:

use strict; 
var setupModuleLoader = require(../src/loader); 

describe("setupModuleLoader", function() { 
    it(exposes angular on the window, function() { 

     setupModuleLoader(window); 
     expect(window.angular).toBeDefined(); 

    }); 
}); 

И в файле loader.js у меня есть:

use strict; 

function setupModuleLoader(window) { 
    var angular = window.angular = {}; //creates empty angular object in browser's `window` 
} 

module.exports = setupModuleLoader; 

Я получаю ссылочную ошибку, которая window не определен, когда я запускаю тест.

Я работаю над этим тестом, используя этот boilerplate, который использует PhantomJS.

+0

При использовании Jasmin 'угловой' уже будет доступна глобальная переменная. проверьте использование [inject] (https://docs.angularjs.org/api/ngMock/function/angular.mock.inject) для загрузки модулей –

+0

Невозможно ли использовать объект окна браузера? Чтобы дать некоторый контекст, я следую книге, которая строит angularjs с нуля, поэтому я фактически не использую библиотеку angularjs. – Paul43

+0

Если первым аргументом функции 'it' является строка. или это опечатка? –

ответ

0

Если вы хотите иметь доступ к объекту window, вы должны убедиться, что ваши тесты выполняются в браузере, а не node.js.

$ gulp test:unit 

задача в указанных boilerplate трасс равнинных mocha тестов и не запускает браузер. Для того, чтобы иметь доступ к window и другим объектам конкретного браузера, вы должны разместить свои тесты в /tests/integration каталоге и запустить их, как это:

$ gulp test:integration 

Это хорошая практика, чтобы ваш код единицы свободно в сочетании с контекстом исполнения, поэтому модульные тесты в шаблоне не запускают браузер. Они не ожидают, что модули кода ничего не знают о window или других объектах браузера.

Еще один способ решить проблему, когда ваш код зависит от какого-либо внешнего материала, - это создание макетов для ваших зависимостей.

0

Well window объект представляет собой окно браузера. Если вы используете тестовый модуль жасмина из браузера, то он доступен в вашем скрипте, иначе он не будет доступен.

Запуск с консоли означает, что вы используете javascript из скрипта host.So хоста не может найти Окно объект.

В опции браузера не указаны псевдонимы глобального объекта, окна и я.

например. браузеры: ['Chrome']

Смежные вопросы