2017-07-02 77 views
0

我正在學習角,我的第一個業力測試拋出下面的錯誤。角業測試失敗,自定義標記不知道元素

AppComponent should create component 
Error: Template parse errors: 
'ereturn-form' is not a known element: 
1. If 'ereturn-form' is an Angular component, then verify that it is part of this module. 
2. If 'ereturn-form' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("[ERROR ->]<ereturn-form></ereturn-form>"): ng:///DynamicTestModule/[email protected]:0 

這是我的模塊和組件

app.module.ts

import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { ReactiveFormsModule } from '@angular/forms'; 
import { HttpModule, JsonpModule } from '@angular/http'; 
import { EreturnService } from './ereturn.service'; 

import { InMemoryWebApiModule } from 'angular-in-memory-web-api'; 
import { InMemoryDataService } from './in-memory-data.service'; 

import { AppComponent }   from './app.component'; 
import { EreturnFormComponent} from './ereturn-form.component'; 

@NgModule({ 
    imports:  [ BrowserModule, ReactiveFormsModule, HttpModule, JsonpModule, 
    InMemoryWebApiModule.forRoot(InMemoryDataService)], 
    declarations: [ AppComponent, EreturnFormComponent ], 
    bootstrap: [ AppComponent ], 
    providers: [ EreturnService ] 
}) 

export class AppModule { } 

app.component.ts

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'my-app', 
    template: '<ereturn-form></ereturn-form>', 
}) 
export class AppComponent { } 

ereturn-form.component.ts

import { Component, OnInit, Input, OnChanges } from '@angular/core'; 

import { Ereturn } from './ereturn'; 
import { EreturnService } from './ereturn.service'; 
import { FormBuilder, FormGroup, Validators } from "@angular/forms"; 

@Component({ 
    selector: 'ereturn-form', 
    templateUrl: './ereturn-form.component.html' 
}) 

export class EreturnFormComponent implements OnInit { 
... 
} 

這是我的規格文件

describe('1st tests',() => { 
    it('true is true',() => expect(true).toBe(true)); 
}); 

爲什麼人緣抱怨自定義HTML代碼?角度編譯並運行它就好了。

非常感謝你

+0

哪裏是規範文件的代碼?更新到 – Aravind

+0

謝謝@Aravind,我只是添加了spec文件 –

+0

一行是不夠的。添加您在模塊創建spec文件時可能犯過錯誤的完整spec文件。 – Aravind

回答

1

如果你的元素是自定義組件,你應該把它添加到您的測試作爲聲明的一部分。

import { CustomElement } from '...your path here'; 
 

 
describe('AppComponent',() => { 
 
    beforeEach(() => { 
 
    TestBed.configureTestingModule({ 
 
     schemas: [ ], 
 
     declarations: [CustomElement], 
 
     imports: [RouterTestingModule] 
 
    }); 
 
    TestBed.compileComponents(); 
 
    });

如果你想忽略特定元素,您可以通過添加CUSTOM_ELEMENTS_SCHEMA到您的模式陣列忽略它:

beforeEach(() => { 
 
    TestBed.configureTestingModule({ 
 
     schemas: [ CUSTOM_ELEMENTS_SCHEMA ], 
 
     declarations: [], 
 
     imports: [] 
 
    });

,最後,如果它來自另一個庫,則應添加它的模塊測試:

import { CustomeModule } from 'module name here'; 
 

 
describe('AppComponent',() => { 
 
    beforeEach(() => { 
 
    TestBed.configureTestingModule({ 
 
     schemas: [ ], 
 
     declarations: [], 
 
     imports: [CustomeModule] 
 
    }); 
 
    TestBed.compileComponents(); 
 
    });