在单元测试中找不到“DynamicTestModule”的NgModule元数据

时间:2016-08-15 23:28:26

标签: angular typescript

使用Angular2.0.0-rc.5我试图运行以下测试但收到错误:

  

错误:找不到'DynamicTestModule'的NgModule元数据。 (第29行)

DynamicTestModule似乎是角度本身的一部分,不是我在项目中引用的模块,也可以在angular.io上的文档页面中找到

import {inject, async, TestBed} from '@angular/core/testing';
import {BrowserDynamicTestingModule, platformBrowserDynamicTesting} from '@angular/platform-browser-dynamic/testing';

describe('AuthService', () => {

    beforeEach(() => {
        TestBed.initTestEnvironment(
            BrowserDynamicTestingModule,
            platformBrowserDynamicTesting()
        ).configureTestingModule({
            imports: [
                {ngModule: CommonModule, providers: [
                    ... // overrides for testing
                ]}
            ]});
    });

    it('should get and set a token saved in storage', inject([AuthService], (instance: AuthService) => {
        instance.token = 'test-token';
        expect(instance.token).toEqual('test-token');
    }));
});

在Google上搜索错误消息不会返回任何结果,并且他们的更改日志在示例中没有提到这一点。

有没有人看到过这个特定的错误并知道发生了什么,或者您是否可以提供一个使用没有产生此错误的内置DI在2.0.0-rc.5中测试服务的示例?

2 个答案:

答案 0 :(得分:2)

如果使用SystemJS模块加载程序加载角度模块,则应使用单个文件,而不是捆绑包。

在索引文件中加载SystemJS后

<script src="node_modules/systemjs/dist/system.src.js"></script>

并在从quickstart application

加载systemjs.config.js之前
<script src="systemjs.config.js"></script>

你需要设置

<script>System.packageWithIndex = true;</script>

答案 1 :(得分:0)

我遇到了类似的问题:

SCRIPT5022: No NgModule metadata found for 'AppModule'. 

对我来说,this angular2 issue comment修复了各种IE版本(特别是IE10)的问题。