Как настроить пространства имен в Jasmine для тестирования?

Мне нужно добавить функциональность в класс Javascript, который я хочу протестировать с помощью Jasmine. Определение класса выглядит примерно так:

GAME.Player.CustomPlayerSetup = function() {
  ...
};

Если я удалю GAME.Player, я смогу написать нормальные тесты и пройти их. Но когда я пытаюсь оставить Game.Player в определении класса для CustomPlayerSetup, я получаю сообщение об ошибке «Игра не определена». Как определить этот тест?

Чтобы ответить на предложение Чарльза, даже если я объявлю переменные GAME и Player в моем тестовом файле Jasmine до строки require, она все равно дает мне, как в

GAME = {};
GAME.Player = {};

CustomPlayerSetup = require("../CustomPlayerSetup").CustomPlayerSetup;

describe("Custom Player Setup", function() {
  ...
});

та же ошибка, которая указывает на файл производственного кода, а не на тестовый файл. Я использую jasmine-node для запуска тестов.


person Tonys    schedule 04.06.2012    source источник


Ответы (2)


Скорее всего, в вашем spec-runner у вас есть какой-либо файл, создающий экземпляр Game и/или player ниже файла, запускающего спецификацию (или вы вообще его не включали).

Если это не так, попробуйте опубликовать свой spec-runner, а также один из ваших тестов, который не прошел.

person asutherland    schedule 04.06.2012

Мне кажется, вам нужно создать экземпляр объекта GAME.Player перед запуском/включением файла js в ваши тесты жасмина. что-то типа:

<script type="text/javascript">
    var GAME = {Player:{}};
</script>
</script src="your_src.js"/>
person Charles Ovando    schedule 04.06.2012