【问题标题】:Angular2 testing with TestBed getting Zone undefined Error使用 TestBed 进行 Angular2 测试获取区域未定义错误
【发布时间】:2017-04-23 00:44:08
【问题描述】:

我一直在学习 Angular 教程 https://angular.io/docs/ts/latest/guide/testing.html 来构建我的第一个单元测试。在我到达 TestBed 示例之前,我能够让一切正常工作。当我将 TestBed 添加到组合中时,我得到“未捕获的 ReferenceError:未定义区域”。

在我的规范包中,我区域声明并初始化了 Testbed 环境。

规范包

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]

        });
    });

});

【问题讨论】:

  • 是的 - 我也收到了。正如泰伊所说,当我要求测试模块时 - TestBed.configureTestingModule 测试失败,区域未定义。我正在运行 Angular 2.1.1

标签: unit-testing typescript jasmine karma-runner testbed


【解决方案1】:

我通过在我的配置中添加以下内容在我的项目中解决了这个问题。 我正在使用 Wallaby.js,所以为了解决这个问题,我在 module.exports 中添加了以下行

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

如果您使用的是 karma 之类的东西,则应该应用相同的解决方案。

【讨论】:

  • 我已经将 zone.js 文件作为我的规范包的一部分。我试图将 zone.js 直接移动到 karma.config 并遇到有关导入承诺的顺序的其他错误。我还尝试更新 karma.config 以匹配手表并包括您提供的设置,但没有这样的运气。
  • 您能展示一下您的 wallaby.js 文件示例吗?你到底把那个放在哪里了?我假设它进入 files 属性?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 2016-11-29
  • 2020-07-19
  • 2018-05-29
  • 1970-01-01
  • 2017-11-17
相关资源
最近更新 更多