Глобальные переменные в тестировщике кармы
У меня есть глобальная переменная, определенная в моем основном шаблоне, которую я использую для хранения информационных битов из задней части, таких как путь контекста среды. Я не могу переместить эту переменную внутри службы.
Как я могу выставить эту переменную в Karma, когда я запускаю модульные тесты?
Ответы
Ответ 1
Вы либо объявляете эту глобальную переменную в своем тестовом файле:
var global = "something";
describe('Your test suit', function() {
...
});
или добавить файл Javascript, где он определен в вашем файле karma.conf.js
:
// list of files / patterns to load in the browser
files: [
...,
'file-containing-the-global-variable.js'
],
Ответ 2
Первое решение не работало для меня в Angular 2.1.x. Он просто не узнает переменную в моей импортированной службе. Мне нужно было поместить переменную окружения в мой файл karma-test-shim.js
и удалить var
, чтобы он был доступен по всему миру.
Моя выглядит следующим образом:
Error.stackTraceLimit = Infinity;
require('core-js/es6');
require('reflect-metadata');
require('zone.js/dist/zone');
require('zone.js/dist/long-stack-trace-zone');
require('zone.js/dist/proxy'),
require('zone.js/dist/sync-test'),
require('zone.js/dist/jasmine-patch');
require('zone.js/dist/async-test');
require('zone.js/dist/fake-async-test');
// Add environment variables here so that tests will inject them in source code
API_URL = 'http://localhost:8080/api/';
var appContext = require.context('../src', true, /\.spec\.ts/);
appContext.keys().forEach(appContext);
var testing = require('@angular/core/testing');
var browser = require('@angular/platform-browser-dynamic/testing');
testing.TestBed.initTestEnvironment(
browser.BrowserDynamicTestingModule,
browser.platformBrowserDynamicTesting()
);