Variables globales en Karma test runner


Tengo una variable global definida en mi plantilla principal, que uso para almacenar bits de información del back-end, como la ruta de contexto del entorno. No puedo mover esa variable dentro de un servicio.

¿Cómo puedo exponer esa variable al Karma cuando corro las pruebas unitarias?

Author: Mimo, 2013-10-09

2 answers

O bien declara esa variable global dentro de su archivo de prueba:

var global = "something";

describe('Your test suit', function() {
...
});

O agregue un archivo Javascript donde está definido a su archivo karma.conf.js:

// list of files / patterns to load in the browser
files: [
   ...,
   'file-containing-the-global-variable.js'
],
 56
Author: Michael Benford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-09 05:22:47

La primera solución no funcionó para mí en Angular 2.1.x. Simplemente no reconocería la variable en mi servicio importado. Lo que tuve que hacer fue poner mi variable de entorno en mi archivo karma-test-shim.js y eliminar var para que estuviera disponible globalmente.

El mío se ve así:

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()
);
 4
Author: occasl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-18 20:02:23