2017-01-30 62 views
0

我想在我的Angular 2/AngularCLI應用程序中設置一些單元測試。儘管應用程序按預期工作,但測試顯示失敗。因此,要簡單地開始(或者我想),我建立了一個測試組件,它是從命令行生成的(ng g c testr)。這將創建一個基本組件測試以及組件文件。當我將CD放入此組件時,然後使用「ng test」運行此內置測試時,我的應用程序中出現與其他組件相關的錯誤。這讓我感到困惑,因爲我認爲單個組件測試是單元測試 - 因此,只是爲了測試特定組件而設計的。這是該組件的試驗例:組件單元測試沒有測試我的Angular 2應用程序中的組件?

/* tslint:disable:no-unused-variable */ 
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 
import { By } from '@angular/platform-browser'; 
import { DebugElement } from '@angular/core'; 

import { TestrComponent } from './testr.component'; 

describe('TestrComponent',() => { 
    let component: TestrComponent; 
    let fixture: ComponentFixture<TestrComponent>; 

    beforeEach(async(() => { 
    TestBed.configureTestingModule({ 
     declarations: [ TestrComponent ] 
    }) 
    .compileComponents(); 
    })); 

    beforeEach(() => { 
    fixture = TestBed.createComponent(TestrComponent); 
    component = fixture.componentInstance; 
    fixture.detectChanges(); 
    }); 

    it('should create',() => { 
    expect(component).toBeTruthy(); 
    }); 
}); 

我想這應該是工作「開箱即用」 - 因爲它的設置自動地由AngularCLI。那麼爲什麼失敗?我在這裏錯過了什麼嗎?這裏的測試代碼是不是用來測試內部組件,而不是測試應用程序中與其他組件的關係?

下面是我得到的一個錯誤的例子。顯然它完全是針對不同的組件。而且我只是從運行這一個測試中得到了各種組件的許多錯誤。

ERROR in ./src/app/app.component.ts 
Module not found: Error: Can't resolve 'app/app.component.html' in '/Users/mko/Documents/abc-cli/abc-cli/cli-abc/src/app' 
@ ./src/app/app.component.ts 77:22-55 
@ ./src/app/app.component.spec.ts 
@ ./src \.spec\.ts 
@ ./src/test.ts 

這裏再次涉及到不同的組件另一個錯誤:

ERROR in ./src/app/views/client/client-panel.component.ts 
Module not found: Error: Can't resolve 'app/views/client/client-panel.component.html' in '/Users/mko/Documents/abc-cli/abc-cli/cli-abc/src/app/views/client' 
@ ./src/app/views/client/client-panel.component.ts 34:22-88 
@ ./src/app/views/client/client-panel.component.spec.ts 
@ ./src \.spec\.ts 
@ ./src/test.ts 

如果我cd到一個組件和運行「NG測試」,並或不,不是隻運行該組件的單元測試?而且,如果不是,我需要更改哪些內容才能進行個別組件測試,而不是全部?

+0

是的,只是在上面添加它。我收到其他組件的錯誤消息除此之外也是如此。不知道爲什麼。 – Muirik

+0

對不起,請澄清。如果我進入一個組件並運行「ng test」,那麼它會不會只運行該組件的單元測試?而且,如果不是,我需要更改哪些內容才能進行個別組件測試,而不是全部? – Muirik

回答

0

所以我想出了這個問題。與我所設想的相反,開箱即用的所有單個組件規格測試將一起運行,因爲它們被組合在一個描述塊中。因此,進入某個組件並運行「ng test」將不會運行該測試。它實際上將運行所有這些。

fdescribe( 'SomeComponent',()=> {...}

如果:

你可以,但是,通過與一些前綴描述功能,就像爲f運行單個組件測試但是,更重要的是,這裏的東西是「ng test」實際上是設計用於運行整個系列單元測試,而不是單個單元測試。