2016-12-07 19 views
4

Я работал над Угловым учебником https://angular.io/docs/ts/latest/guide/testing.html, чтобы построить свои первые модульные тесты. Я могу заставить все работать, пока не получу пример TestBed. Когда я добавляю TestBed в микс, я получаю сообщение «Uncaught ReferenceError: Zone is not defined».Угловое тестирование с помощью TestBed Получение зоны undefined Ошибка

В моей зоне спектра I зона объявила и инициализировала среду Testbed.

Spec-расслоением

Error.stackTraceLimit = Infinity; 

require('phantomjs-polyfill'); 

require('core-js/es6'); 
require('core-js/es7/reflect'); 

// Typescript emit helpers polyfill 
require('ts-helpers'); 

// DO NOT REORDER: Dependency order needs to be strictly followed 
require('zone.js/dist/zone'); 
require('zone.js/dist/long-stack-trace-zone'); 
require('zone.js/dist/async-test'); 
require('zone.js/dist/fake-async-test'); 
require('zone.js/dist/sync-test'); 
require('zone.js/dist/proxy'); 
require('zone.js/dist/jasmine-patch'); 

// RxJS 
require('rxjs/Rx'); 

var testing = require('@angular/core/testing'); 
var browser = require('@angular/platform-browser-dynamic/testing'); 

testing.TestBed.initTestEnvironment(
    browser.BrowserDynamicTestingModule, 
    browser.platformBrowserDynamicTesting() 
); 

Object.assign(global, testing); 

window.__karma__ && require('./karma-require'); 

Тестовый файл

import { ComponentFixture, TestBed } from '@angular/core/testing'; 
import { SomeComponent } from './some.component'; 

let fixture: ComponentFixture<SomeComponent>; 

describe('Orders Component',() => { 

    let ordersComponentStub: SomeComponent; 

    beforeEach(() => { 
     TestBed.configureTestingModule({ 
      declarations: [SomeComponent] 

     }); 
    }); 

});

+0

Yep - Я получаю это также. Как говорит Тай, в тот момент, когда я прошу модуль тестирования - TestBed.configureTestingModule, тест завершился неудачно с не заданной зоной. Я запускаю Angular 2.1.1 –

ответ

1

Я исправил это в своем проекте, добавив в свою конфигурацию следующее. Я использую Wallaby.js, поэтому, чтобы исправить эту проблему, я добавил следующую строку в мой module.exports

{pattern: 'node_modules/zone.js/dist/zone.js', included: true, watched: true }

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

+0

Я уже втягиваю в файл zone.js часть моей спецификации. Я попытался переместить zone.js прямо в файл karma.config и столкнулся с дополнительными ошибками в отношении порядка, в котором импортируются обещания. Я также попытался обновить karma.config, чтобы он соответствовал часам и включил настройку, предоставленную вам, не было такой удачи. – Tye2545