Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Angular2测试与测试台获取区域未定义错误_Unit Testing_Typescript_Jasmine_Karma Runner_Testbed - Fatal编程技术网

Unit testing Angular2测试与测试台获取区域未定义错误

Unit testing Angular2测试与测试台获取区域未定义错误,unit-testing,typescript,jasmine,karma-runner,testbed,Unit Testing,Typescript,Jasmine,Karma Runner,Testbed,我一直在学习Angular教程来构建我的第一个单元测试。在到达测试台示例之前,我能够让一切正常工作。当我将测试床添加到混合中时,我得到“未捕获引用错误:未定义区域” 在我的规范包中,我声明并初始化了测试床环境 规范包 Error.stackTraceLimit = Infinity; require('phantomjs-polyfill'); require('core-js/es6'); require('core-js/es7/reflect'); // Typescript emi

我一直在学习Angular教程来构建我的第一个单元测试。在到达测试台示例之前,我能够让一切正常工作。当我将测试床添加到混合中时,我得到“未捕获引用错误:未定义区域”

在我的规范包中,我声明并初始化了测试床环境

规范包

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]

        });
    });
从'@angular/core/testing'导入{ComponentFixture,TestBed};
从“./some.component”导入{SomeComponent};
let夹具:组件夹具;
描述('订单组件',()=>{
让ordersComponentStub:SomeComponent;
在每个之前(()=>{
TestBed.configureTestingModule({
声明:[组件]
});
});

}))

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

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

如果你在使用类似于因果报应的东西,同样的解决方案也应该适用。

是的,我也明白了。正如Tye所说,当我请求一个测试模块TestBed.configureTestingModule时,测试失败,区域未定义。我正在运行Angular 2.1.1,我已经将zone.js文件作为我的规范包的一部分。我试图将zone.js直接移动到karma.config,但在导入承诺的顺序方面遇到了其他错误。我还尝试更新karma.config以匹配手表,并包括您提供的设置,没有这样的运气。您能显示您的wallaby.js文件示例吗?你到底把它放在哪里了?我想它会进入文件属性?