У меня возникли проблемы с тем, как настроить набор модульных тестов при использовании внешних библиотек. В данном случае я использую библиотеку Phaser. Вот два моих простых модуля приложения.
App.js
// App.js - will be used to init the app
import Game from './Game';
const app = {
initialize: function () {
this.start();
},
start: function () {
new Game();
}
};
export default app;
Game.js
// Game.js - used to build out a Phaser Game
// chosen to use classes in this case. (not sure if relevant)
import Phaser from '../libs/phaser/phaser.min';
class Game extends Phaser.Game {
constructor() {
super(500, 500, Phaser.AUTO, 'content', null);
}
}
export default Game;
Набор тестов
Я использую: Jasmine (cli в узле). Я не особенно хочу использовать что-то вроде Karma, но буду, если это единственный способ заставить все работать.
Вот моя спецификация приложения:
import app from "app";
describe("App", function() {
describe("when app is started", function() {
beforeEach(function () {
app.initialize();
});
it("expect application to start after initialization", function() {
expect(app.start).toHaveBeenCalled();
});
});
});
Запуск теста
Я запускаю тест через сценарий npm через babel (на самом деле не уверен, что здесь происходит. Может быть, кто-то может помочь мне пролить свет на это):
babel-node --presets es2015 ./node_modules/.bin/jasmine
Итак, он все компилирует, а затем запускает тест:
Проблема
Когда я запускаю тест, я получаю:
ReferenceError: document is not defined
at Object.create (/Users/auser/Code/games/test/libs/phaser/phaser.min.js:7:10242)
at new b.CanvasBuffer (/Users/auser/Code/games/test/libs/phaser/phaser.min.js:8:22106)
at Function.b.CanvasTinter.checkInverseAlpha (/Users/auser/Code/games/test/libs/phaser/phaser.min.js:8:24223)
at /Users/auser/Code/games/test/libs/phaser/phaser.min.js:8:24598
at Object.<anonymous> (/Users/healy/Code/games/test/libs/phaser/phaser.min.js:9:15244)
at Module._compile (module.js:425:26)
at loader (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:146:5)
at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:156:7)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
Вопрос 1
Правильно ли я настраиваю проект? Я чувствую, что Phaser.js следует высмеивать или как-то опускать основной код? Особенно, если это ссылка на document
. Любая помощь здесь будет высоко оценена. Не стесняйтесь присылать мне ссылку, чтобы помочь мне внедрить внешние библиотеки в веб-приложение с набором тестов.
вопрос 2
Уместно ли здесь babel-node --presets es2015
? Я не слишком уверен, что он делает.